因此0如果非要对应你的输入,应该是城镇数量n,而不是 接下来有m行 这种输入描述
by AC_or_suicide @ 2023-11-28 20:34:10
请教一下我这个为啥样例是对的,但是全是wa```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int find(vector<int> p, int x)
{
while(p[x] != x)
{
x = p[x];
}
return x;//并查集返回根
}
int main()
{
int n , m;
vector<int> res;
int count = 0;
while(true)
{
cin >> n;
if(n == 0)
{
break;
}
cin >> m;
if(m == 0)
{
res.push_back(n-1);
continue;
}
int ans = n-1;
vector<int> p(n+1);//并查集
for (int i = 1; i < n+1; i++)
{
p[i] = i;//初始化
}
for(int i = 0; i < m; i++)//遍历每条边
{
int x,y;
cin >> x >> y;//x,y是连在一起的
if(find(p,x)!=find(p,y))
{
p[y] = x;//并入
ans --;
}
}
res.push_back(ans);
}
for(int i = 0; i < res.size(); i++)
{
cout << res[i] ;
if(i != res.size()-1)
{
cout << endl;
}
}
return 0;
}
```
by HGerdd @ 2024-01-31 21:15:23