吃
2025-01-24 19:17:28
发布于:上海
#include <bits/stdc++.h>
using namespace std;
struct node{
int num,v;
};
int n,m,x,y;
node a[100010];
vector<int> c[100010];
int vis[100010];
bool cmp(node l,node r){
return l.v>r.v;
}
void dfs(int idx){
// for (int i=0;i<c[idx].size();i++){
// if (vis[c[idx][i]]==0){
// vis[c[idx][i]]=vis[idx];
// dfs(c[idx][i]);
// }
// }
for(int x:c[idx]){
if(vis[x]==0){
vis[x]=vis[idx];
dfs(x);
}
}
}
int main(){
cin>>n>>m;
for (int i=1;i<=n;i++){
cin>>x;
a[i].num=i;
a[i].v=x;
}
sort(a+1,a+n+1,cmp);
for (int i=1;i<=m;i++){
cin>>x>>y;
c[x].push_back(y);
c[y].push_back(x);
}
for (int i=1;i<=n;i++){
if (vis[a[i].num]==0){
vis[a[i].num]=a[i].v;
dfs(a[i].num);
}
}
for (int i=1;i<=n;i++){
cout<<vis[i]<<" ";
}
}
这里空空如也
有帮助,赞一个