直接上代码
代码
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std
;
int pre
[1050];
int find(int x
){
int r
=x
;
while(r
!=pre
[r
]) r
=pre
[r
];
int i
=x
,j
;
while(pre
[i
]!=r
){
j
=pre
[i
];
pre
[i
]=r
;
i
=j
;
}
return r
;
}
void join(int x
,int y
){
int fx
=find(x
),fy
=find(y
);
if(fx
!=fy
){
if(fx
<fy
) pre
[fy
]=fx
;
else pre
[fx
]=fy
;
}
}
int main(){
int num
,edgeNum
;
cin
>>num
>>edgeNum
;
for(int i
=0;i
<num
;i
++) pre
[i
]=i
;
while(edgeNum
--){
int a
,b
;
cin
>>a
>>b
;
join(a
,b
);
}
for(int i
=0;i
<num
;i
++)
cout
<<find(i
)<<endl
;
return 0;
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-19752.html