以下正文:

代码(未过样例):
#include<bits/stdc++.h>
using namespace std;
int n,m,a[100010];
vector<int> v[100010];
void dfs(int x){
for(int j=0;j<v[x].size();j++){
if(a[v[x][j]])
continue;
a[v[x][j]]=n;
dfs(v[x][j]);
}
return;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,vv;
cin>>u>>vv;
v[u].push_back(vv);
v[vv].push_back(u);
}
for(int i=n;i>=1;i--){
if(!a[i])
a[i]=i;
for(int j=0;j<v[i].size();j++){
if(a[v[i][j]])
continue;
a[v[i][j]]=n;
dfs(v[i][j]);
}
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}