修改数组(并查集)

1242. 修改数组(并查集的巧妙应用)

修改数组
在这里插入图片描述

样例输入:

5
2 1 1 3 4

样例输出:

2 1 3 4 5

代码:

#include <cstdio>

const int N = 1100010;

int p[N];

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

int main()
{
    int n;
    scanf("%d", &n);

    for (int i = 1; i < N; i ++ ) p[i] = i;
    for (int i = 1; i <= n; i ++ )
    {
        int x;
        scanf("%d", &x);
        x = find(x);
        printf("%d ", x);
        p[x] = x + 1;
    }

    return 0;
}

 

posted @ 2022-04-04 19:59  panse·  阅读(54)  评论(0)    收藏  举报