我这样写是不是有问题

P1536 村村通

每次循环要把ans变成0,这样就过了 ```cpp #include<bits/stdc++.h> using namespace std; int fa[1000001],n,m; int find(int x){ if(x!=fa[x])fa[x]=find(fa[x]); return fa[x]; } void unite(int x,int y){ int f=find(x),j=find(y); fa[f]=j; } int main(){ int x,y; Begin: int ans=0; cin>>n; if(n==0)return 0; cin>>m; for(int i=1;i<=n;i++){ fa[i]=i; } for(int i=1;i<=m;++i){ cin>>x>>y; unite(x,y); } for(int i=1;i<=n;i++){ if(find(i)==i)++ans; } cout<<ans-1<<endl; goto Begin; } ```
by syp11 @ 2024-02-28 21:45:06


|