样例可以,并查集为什么错了
查看原帖
样例可以,并查集为什么错了
916946
Vera_suki楼主2023/8/14 18:11
#include <bits/stdc++.h>

using namespace std;

const int N = 10010;

int n, m;
int p[N], Max[N];

int find(int x) {
    if (x != p[x]) find(p[x]);
    return p[x];
}

int main() {
    cin >> n >> m;

    for (int i = 1; i <= n; i++) p[i] = i, Max[i] = i;

    for (int i = 0; i < m; i++) {
        int a, b;
        cin >> a >> b;

        p[b] = a;
        if (b > a&&Max[a]<b) Max[a] = b;
        if (b > find(a)&&Max[find(a)]<b) Max[find(a)] = b;
    }

    for (int i = 1; i <= n; i++)
        cout << Max[i] << " ";

    return 0;
}
2023/8/14 18:11
加载中...