一个本题的hack数据

P1196 [NOI2002] 银河英雄传说

话说应该@哪位管理?
by brimosta @ 2021-08-15 11:16:03


@[StudyingFather](/user/22030)
by brimosta @ 2021-08-15 11:17:42


@[chen_zhe](/user/8457)
by brimosta @ 2021-08-15 11:21:05


Orz,我的代码也是
by Mysterious_Mini @ 2021-08-15 11:21:42


第一页的题解并没有能通过此数据的
by brimosta @ 2021-08-15 11:25:21


@[BFqwq](/user/120074)
by brimosta @ 2021-08-15 11:27:40


@[lihaochen1234567890](/user/247193) ```cpp #include <bits/stdc++.h> #define Maxn 500010 #define ll unsigned long long using namespace std; ll n,father[Maxn],x,y,rank[Maxn],sum[Maxn]; void makeSet(ll n){ for(int i=1;i<=n;i++) father[i]=i,sum[i]=1; } ll findSet(ll x){ if(father[x]==x)return x; ll root=findSet(father[x]); rank[x]+=rank[father[x]]; return father[x]=root; } void unionSet(ll x,ll y){ ll r1=findSet(x),r2=findSet(y); if(r1!=r2) father[r1]=r2,rank[r1]=sum[r2],sum[r2]+=sum[r1]; return; } int main() { scanf("%llu",&n); makeSet(n); for(ll i=1;i<=n;i++){ char c=getchar(); while(c!='M'&&c!='C') c=getchar(); scanf("%llu %llu",&x,&y); if(c=='M') unionSet(x,y); else if(c=='C'){ ll a=findSet(x),b=findSet(y); if(a!=b) printf("-1\n"); else printf("%llu\n",max(rank[x],rank[y])-min(rank[x],rank[y])-1); } } return 0; } ``` 为什么我的代码输出了 $18446744073709551615$
by pzj666 @ 2021-08-15 11:28:59


@[pzj666](/user/422940) 我怎么知道,我自己怎么错的也没搞明白,为什么两次find不一样qaq
by brimosta @ 2021-08-15 11:33:48


实测,只有 @[Mr_Skirt](/user/36956) @[p_b_p_b](/user/76481) @[邱湘雅](/user/150821) 三位巨佬的代码能够通过此数据
by brimosta @ 2021-08-15 11:39:20


为什么又沉了……
by brimosta @ 2021-08-15 11:40:16


| 下一页