#include<iostream> using namespace std; int n, m; const int N = 1e6; int a[N]; int get(int v) { if (a[v] = v)return v; else { a[v] = get(a[v]); return a[v]; } } void merge(int b, int c) { int t1, t2; t1 = get(b); t2 = get(c); if (t1 != t2) { a[t2] = t1; } } int main() { while (1) { int cnt = 0; cin >> n; if (n == 0) break; cin >> m; for (int i = 1;i <= n;i++) a[i] = i; for (int i = 1;i <= m;i++) { int b, c; cin >> b >> c; merge(b, c); } for (int i = 1;i <= n;i++) { if (a[i] ==1) { cnt++; } } cout << cnt << endl; } }哪里错了
时间: 2024-04-08 07:30:48 浏览: 126
使用include <iostream>时一定要加using namespace std
在你的代码中,有一个错误出现在以下这行代码:
```cpp
if (a[v] = v) return v;
```
应该使用双等号(==)进行比较而不是单等号(=),因为单等号是赋值操作,会将 `v` 的值赋给 `a[v]`。所以应该改为:
```cpp
if (a[v] == v) return v;
```
这样才能正确比较 `a[v]` 和 `v` 的值。
阅读全文