Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:谁能帮我看看,WA,自己测了很多数据都没问题.In Reply To:谁能帮我看看,WA,自己测了很多数据都没问题. Posted by:asdqwe at 2006-07-20 13:14:50 > #include <iostream> > using namespace std; > int uset[30011],num[30011],sub[300011]; > void init(int n) > { > int i; > for (i=1;i<n;i++) > uset[i]=i,num[i]=1,sub[i]=0; > } > int root(int v) > { > if(uset[v] == v) > return v; > uset[v] = root(uset[v]); > return uset[v]; > } > void merge(int a,int b) > { > int x,y; > x=root(a),y=root(b); > uset[y]=uset[x]; > sub[y]=num[x]; > num[x]+=num[y]; > } > int count (int a) > { > int total=0,x=a; > while (uset[x]!=x) > { > total+=sub[x]; > x=uset[x]; > } > uset[a]=x; > sub[a]=total; > return num[x]-sub[a]-1; > } > main () > { > // #ifndef ONLINE_JUDGE > // freopen("in.txt","r",stdin); > // freopen("out.txt","w",stdout); > // #endif > int a,b,n,p; > char c[3]; > scanf ("%d",&p); > init (30011); > while (p--) > { > scanf ("%s",&c); > if (c[0]=='C') > { > scanf ("%d",&a); > printf ("%d\n",count(a)); > } > else > { > scanf ("%d%d",&a,&b); > merge(a,b); > } > } > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator