#include
using namespace std;
const int N = 1000010;
int p[N], a[N];
int find(int x) {
if (x != p[x]) p[x] = find(p[x]);
return p[x];
}
int main(void) {
int n;
scanf("%d", &n);
for (int i = 1; i <= N; i++) p[i] = i;
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
}
for (int i = 1; i <= n; i++) {
int father = find(a[i]);
printf("%d ", father);
p[father] = father + 1;
}
return 0;
}
0.0分
1 人评分
点我有惊喜!你懂得!浏览:1670 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:608 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:1055 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:1239 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:672 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:669 |
三角形 (C语言代码)浏览:905 |
Minesweeper (C语言描述,蓝桥杯)浏览:1125 |
【偶数求和】 (C语言代码)浏览:431 |
蚂蚁感冒 (C语言代码)浏览:768 |