hdu3635之並查集

2021-06-13 19:16:43 字數 557 閱讀 6586

#include#include#include#include#include#include#include#include#include#include#define inf 99999999

using namespace std;

const int max=10000+10;

/*father[i]表示i節點的父親,rank[i]i所在集合的元素

sum轉換的次數

*/int father[max],rank[max],sum[max];

void makeset(int num)

} int findset(int v)

void union(int x,int y)

int main(){

int t,n,m,a,b,num=0;

char s;

cin>>t;

while(t--){

scanf("%d%d",&n,&m);

printf("case %d:\n",++num);

makeset(n);

for(int i=0;i

hdu2818與hdu3635 (帶權並查集)

約翰正在玩積木。有n個block 1 n 30000 編號為1 n 最初有n根樁,每根樁包含乙個塊。然後john做一些運算p次 1 p 1000000 有兩種操作 m x y 把包含x塊的整個堆放到包含y塊的堆上,如果x和y在同一堆上,就忽略這個命令。c x計算方塊x下的方塊數 要求您找出每個c操作...

HDU3938 並查集 並查集

先按邊權值排個序,每次加入一條邊,用並查集,關鍵看懂題。include include include include using namespace std const int maxn 10010 int n,m,q struct edge edges maxn 5 inline int cmp...

hdu2473之並查集

思路 每次刪除乙個點a,並不把a從當前集合刪除,而是用乙個陣列node a 代表a對應的點,所以每次刪除a後,node a n,即開闢乙個新的點作為a對應的點,這樣就不會影響a這個集合 include include include include include include include i...