2194 . 综合题

看程序回答问题【CSP 2019 提高级第一轮】

#include <iostream>
using namespace std;

const int maxn = 1000;
int n;
int fa[maxn], cnt[maxn];

int getRoot(int v) {
    if (fa[v] == v) return v;
    return getRoot(fa[v]);
}

int main() {
    cin >> n;
    for (int i = 0; i < n; ++i) {
        fa[i] = i;
        cnt[i] = 1;
    }
    int ans = 0;
    for (int i = 0; i < n - 1; ++i) {
        int a, b, x, y;
        cin >> a >> b;
        x = getRoot(a);
        y = getRoot(b);
        ans += cnt[x] * cnt[y];
        fa[x] = y;
        cnt[y] += cnt[x];
    }
    cout << ans << endl;
    return 0;
}
1 . (判断题)

输入的 $a$ 和 $b$ 值应在 $[0, n-1]$的范围内。()

2 . (判断题)

第 16 行改成 fa[i] = 0;,不影响程序运行结果。()

3 . (判断题)

若输入的 $a$ 和 $b$ 值均在 $[0, n-1]$ 的范围内,则对于任意 $0\leq i < n $ 都有 $0 \leq fa[i] < n$ ()

4 . (判断题)

若输入的 $a$ 和 $b$ 值均在 $[0, n-1]$ 的范围内,则对于任意 $0\leq i < n$ 都有 $1 \leq cnt[i]\leq n$ ()

5 . (单选题)

当 $n$ 等于50时,若 $a,b$ 的值都在 $[0,49]$ 的范围内,且在第 $25$ 行时 $x$ 总是不等于 $y$,那么输出为()。

6 . (单选题)

此程序的时间复杂度是()。