【hiho】14 無間道之並查集【圖論--並查集】
阿新 • • 發佈:2018-10-13
const lse string turn problem scan -c for sca
傳送門:無間道之並查集
分析
並查集的分析可以看上面的傳送門,寫的挺好的了。
其實在我看來並查集就是一種方便的維護集合的一種技巧,提出了代表元素這一概念。
My AC Code
#include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; const int maxn=1e5+5; int represent[maxn]; int find_represent(int x) { if(x == represent[x]) { return x; } else { represent[x]=find_represent(represent[x]); return represent[x]; } } int main() { int n; scanf("%d",&n); int temp; int index=1; map<string,int> map_str; for(int i=1;i<maxn;i++) { represent[i]=i; } for(int i=0;i<n;i++) { scanf("tmep"); string sa,sb; scanf("%d",&temp); cin>>sa>>sb; if(map_str[sa]==0) map_str[sa]=index++; if(map_str[sb]==0) map_str[sb]=index++; int ia=map_str[sa]; int ib=map_str[sb]; int ra=find_represent(ia); int rb=find_represent(ib); if(temp) { if(ra==rb) { printf("yes\n"); } else { printf("no\n"); } } else { represent[ra]=rb; } } return 0; }
【hiho】14 無間道之並查集【圖論--並查集】