标签:
1 #include <cstdio> 2 #include <cstring> 3 using namespace std; 4 int f[2*1000005],flag[4*1000005],x,y,ans,cnt,n,m,k=1; char c; 5 int sf(int x){ return x==f[x]? x:f[x]=sf(f[x]); } 6 int main(){ 7 while(scanf("%d%d",&n,&m),n+m){ 8 ans=0,cnt=2*n; 9 for(int i=0;i<n;i++) f[i]=n+i; 10 for(int i=n;i<2*n+m;i++) f[i]=i; 11 memset(flag,0,sizeof(flag)); 12 for(int i=1;i<=m;i++){ 13 scanf(" %c",&c); 14 if(c==‘M‘){ 15 scanf("%d%d",&x,&y); 16 f[sf(x)]=sf(y); 17 } else { 18 scanf("%d",&x); 19 f[x]=cnt++; 20 } 21 } 22 for(int i=0;i<n;i++) 23 if(flag[sf(i)]==0){ 24 ans++; 25 flag[sf(i)]=1; 26 } printf("Case #%d: %d\n",k++,ans); 27 } return 0; 28 }
HDU 2473 - Junk-Mail Filter ,并查集的删点
标签:
原文地址:http://www.cnblogs.com/nicetomeetu/p/5161964.html