hdu 2473

来源:互联网 发布:有哪些好看的网络剧 编辑:程序博客网 时间:2024/06/02 04:41
#include<stdio.h>#include<string.h>#define N 2000200int mark[N];struct node{int pre;//a[i]的父节点int rep;//a[i]当前的值}a[N];int find(int n){if(n==a[n].pre)return n;a[n].pre=find(a[n].pre);return a[n].pre;}void join(int x,int y){int f1,f2;f1=find(x);f2=find(y);if(f1!=f2)a[f1].pre=f2;}int main(){int n,m,t,tt,ans,i,k,x,y;char str[10];tt=1;while(scanf("%d%d",&n,&m)!=EOF){memset(mark,0,sizeof(mark));if(n==0&&m==0)break;for(i=0;i<n;i++){a[i].pre=i;a[i].rep=i;}k=n;for(i=1;i<=m;i++){scanf("%s",str);if(str[0]=='M'){scanf("%d%d",&x,&y);join(a[x].rep,a[y].rep);}else if(str[0]=='S'){scanf("%d",&x);a[x].rep=k;a[k].pre=k;k++;}}ans=0;for(i=0;i<n;i++){t=find(a[i].rep);if(!mark[t]){mark[t]=1;ans++;}}printf("Case #%d: %d\n",tt++,ans);}return 0;}

0 0
原创粉丝点击