| ||||||||||
| 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:sw1001 at 2011-04-01 21:20:38 > #include <stdio.h>
>
> int father[50010], relate[50010];
>
> void makeset(int n)
> {
> int i;
>
> for(i=1;i<=n;++i)
> {
> father[i]=i;
> relate[i]=0;
> }
>
> }
>
>
> int findset(int x)
> {
> int t;
> if(x!=father[x])
> {
> t=father[x];
> father[x]=findset(father[x]);
> relate[x]=(relate[x]+relate[t])%3;
> }
> return father[x];
> }
>
>
> void Union(int x, int y, int relat)
> {
> int xx, yy;
>
> xx=findset(x);
> yy=findset(y);
>
>
> father[yy]=xx;
> relate[yy]=(relate[x]-relate[y]+relat+3)%3;
>
>
>
> }
>
> int main()
> {
> int N, K, tag, ai ,bi, sum=0, aai, bbi;
>
>
>
> makeset(N);
>
> while(K--)
> {
> scanf("%d%d%d", &tag, &ai, &bi);
>
>
> if(ai>N||bi>N||(tag==2&&ai==bi))
> {
> ++sum;
>
> }
> else
> {
> aai=findset(ai);
> bbi=findset(bi);
>
> if((aai==bbi)&&(relate[ai]-relate[bi]+3)%3!=tag-1)
> {
> ++sum;
>
> }
> else
> Union(ai, bi, tag);
> }
> }
>
>
> printf("%d\n", sum);
>
>
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator