小花梨判連通

2021-09-23 01:43:04 字數 1267 閱讀 2591

「美登杯」上海市高校大學生程式設計邀請賽(華東理工大學)2023年5月18日

problemc 小花梨判連通

時間限制:2000ms

空間限制:512mb

description

小花梨給出n個點,讓k位同學對這n個點任意新增無向邊,構成k張圖。小花梨想知道對於每個點i,存在多少個點j(包括i本身),使得i和j在這k張圖中都是連通的。

input

第一行輸入兩個正整數n和k,分別表示點的個數和同學數。

接下來分成k部分進行輸入,每部分輸入格式相同。

每部分第一行輸入乙個整數ai,表示第i位同學連邊的數目。

接下來ai行,每行兩個正整數u,v,表示第푖位同學將點u和點v之間進行連線。可能會存在重邊或者自環。(1≤n≤100000,1≤k≤10,1≤u,v≤n,0≤ai≤200000)

output

輸出n行,第i行輸出在k張圖中都和編號為i的點連通的點的數目(包括i本身)

input

4 2

31 2

1 32 3

21 2

3 4

output

221

1對於每個連通塊進行染色 在k張圖中 每個點都會有k個顏色 連通的倆個點在這個圖中的顏色是一樣的 如果有倆個點在k張圖中的顏色都相等 那麼這倆個點在k張圖中就都是連通的用乙個map,int > map來統計答案即可

#includeusing namespace std;

const int maxn=1e5+5;

int n,k,nowcolor;

vectorcolor[maxn];

vectorg[maxn];

map, int> map;

bool vis[maxn];

void dfs(int u)

int main()

//清空 初始化

int m,u,v;

scanf("%d",&m);

while(m--)

nowcolor=0;//開始染色

for(int j=1;j<=n;j++)

}for(int i=1;i<=n;i++) map[color[i]]++;//map統計 這個點被染成了vector裡面的這幾種顏色 如果有其他的點也被染成了這個顏色 那麼就會+1

for(int i=1;i<=n;i++) printf("%d\n",map[color[i]]);

return 0;

}

C 小花梨判連通

題意 給你k張圖,每個圖有點和邊。輸出每個點1 2.n的點在每張圖裡面都聯通的點的個數。思路 染色也行,並查集也行。在k張圖裡面給每個點染色。比如有3個點,4張圖。染色情況如下 點1 1 1 1 1 點2 1 1 2 2 點3 1 1 2 2 將每個點的k個染色情況作為map的key,點2 1 1 ...

「美登杯」 C 小花梨判連通

題意 給定n個點和基於這n個點為基的k張無向圖 輸出每個點所在的聯通塊數量 滿足所有的圖 並查集並不好操作 可以 進行dfs染色 然後把染色情況加入到color 再進行對映 顯然如果兩個點的染色情況完全一樣 那麼就在同一點 includeusing namespace std input by bx...

小花梨的陣列

probleme 小花梨的陣列 時間限制 1000ms 空間限制 512mb description 小花梨得到了乙個長度為n的陣列a,現在要對它進行三種操作 1 l r對所有的i l,r a i a i minprime a i 2 l r對所有的i l,r a i a i minprime a ...