COGS 1052. [Vijos1022] Victoria的舞会2
1052. [Vijos1022] Victoria的舞会2
并查集吧。。。
#include<bits/stdc++.h> using namespace std; #define maxn 1000000 #define maxm 2333 int n,m,ans,fa[maxn],x,a[maxm][maxm]; int find(int x) { return fa[x]==x?x:fa[x]=find(fa[x]); } int main() { freopen("victoria2.in","r",stdin); freopen("victoria2.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;i++) fa[i]=i; for(int i=1;i<=n;i++) while(scanf("%d",&x)&&x) a[i][++a[i][0]]=x; for(int i=1;i<=n;i++) for(int j=1;j<=a[i][0];j++) { int t=a[i][j]; for(int k=1;k<=a[t][0];k++) if(a[t][k]==i) fa[find(t)]=find(i); } for(int i=1;i<=n;i++) if(find(i)==i) ans++; printf("%d",ans); return 0; }