#include <bits/stdc++.h>
using namespace std;
#define int long long
#define s second
#define f first
void helper(int vis[], vector<int>list[], int i, vector<int>&comp){
vis[i]= true;
comp.push_back(i);
for(auto it: list[i]){
if(vis[it]==false){
helper(vis, list, it, comp);
}}
}
void solve(){
int n, t;
cin>>n>>t;
int temp[n+1];
unordered_map<int, int>mp;
for(int i=1; i<=n; i++){
cin>>temp[i];
mp[temp[i]]=i;
}
// sort(temp+1, temp+n+1);
// for(int i=1; i<=n; i++){
// // cin>>temp[i];
// mp[temp[i]]=i;
// }
// for(auto it: mp){
// cout<<it.first<<" "<<it.second<<endl;}
int arr[n+1];
memset(arr, -1, sizeof(arr));
vector<int> list[n+1];
for(int i=0; i<t; i++){
int u, v;
cin>>u>>v;
if(u==v)continue;
list[temp[v]].push_back(temp[u]);
list[temp[u]].push_back(temp[v]);
}
int vis[n+1]={0};
for(int i=1; i<=n; i++){
if(vis[i]==0){
vector<int>comp;
helper(vis, list, i, comp);
sort(comp.begin(), comp.end());
vector<int>help;
for(int j=0; j<comp.size(); j++){
help.push_back(mp[comp[j]]);
}
// for(int s=0; s<comp.size(); s++){
// cout<<comp[s]<<" ";}cout<<"\n";
// for(int s=0; s<comp.size(); s++){
// cout<<help[s]<<" ";}cout<<"\n";
sort(help.begin(), help.end());
for(int j=0; j<comp.size(); j++){
// cout<<comp[j]<<" ";
temp[help[j]]=comp[comp.size()-1-j];
}
// cout<<endl;
// for(int k=1; k<=n; k++){
// cout<<temp[k]<<" ";}
// cout<<"\n";
}
}
for(int k=1; k<=n; k++){
cout<<temp[k]<<" ";}
cout<<"\n";
}
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif // ONLINE_JUDGE
int t=1;
// cin>>t;
while(t--){
solve();
}
return 0;
}
435. Non-overlapping Intervals | 406. Queue Reconstruction by Height |
380. Insert Delete GetRandom O(1) | 332. Reconstruct Itinerary |
368. Largest Divisible Subset | 377. Combination Sum IV |
322. Coin Change | 307. Range Sum Query - Mutable |
287. Find the Duplicate Number | 279. Perfect Squares |
275. H-Index II | 274. H-Index |
260. Single Number III | 240. Search a 2D Matrix II |
238. Product of Array Except Self | 229. Majority Element II |
222. Count Complete Tree Nodes | 215. Kth Largest Element in an Array |
198. House Robber | 153. Find Minimum in Rotated Sorted Array |
150. Evaluate Reverse Polish Notation | 144. Binary Tree Preorder Traversal |
137. Single Number II | 130. Surrounded Regions |
129. Sum Root to Leaf Numbers | 120. Triangle |
102. Binary Tree Level Order Traversal | 96. Unique Binary Search Trees |
75. Sort Colors | 74. Search a 2D Matrix |