hdu 2473並查集 節點對映

2021-06-22 18:41:54 字數 696 閱讀 8756

這道題是到好題,要想做出這道題,得學會節點對映。。

因為題目中講了,有合併,還有刪除, 那刪除乙個節點後,其他的節點關係依舊,但是這個被刪除的節點就得孤立, 而且被孤立之後可能重新回到某個集合中,那如何處理呢?

就是對映,比如1到n ,,,,,,現在要合併的是4 和  5 號節點,我們合併的並不是  4  和  5 ,而是 union(mp[4],mp[5]),mp[i]就是節點i 的對映。。

最後判斷有多少個不同特徵的郵件就 看有少個結合,也就是看有多少個點事根節點。。

請看**:

#include

#define n 1001000

using namespace std;

int f[n],mp[n],cnt[n];   //這塊陣列得開這麼大,不然wrong 儘管題目要求的是 10 的5次方,

int find(int x)//查

void make(int a,int b)//並

}int main()

char s[10];

int a,b;

for(int i=0;ielse if(s[0]=='s')

}int sum=0;

for(int i=0;iif(cnt[i])sum++;

printf("case #%d: %d\n",test,sum);

}return 0;

}

hdu2473之並查集

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

HDU3938 並查集 並查集

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

hdu 拓撲排序 並查集

題目大意 有一些池塘,每乙個池塘都有乙個價值,現在想刪除一些池塘。有如下刪除條件 1 乙個池塘有兩個管道連線的不可以刪除。2 求最後剩下的為奇數環的池塘的價值。先用拓撲排序的思路將兩個一下連線的全刪除 只有用並查集統計數目 includeusing namespace std define ll l...