如果你用的是并查集且是全WA

P1536 村村通

因此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


|