第三题#include <bits/stdc++.h>using namespace std;
int main(){
int n,m;cin>>n>>m;
vector<int> v(n+1);
for(int i = 0;i<n;i++){
scanf("%d",&v[i+1]);
}
vector<vector<int>> vv(n+1);
vector<int> cnt(n+1,0);
int val1,val2;
for(int i = 0;i<m;i++){
scanf("%d %d",&val1,&val2);
vv[val1].push_back(val2);
cnt[val2]++;
}
priority_queue<pair<int, int>,vector<pair<int, int>>,greater<>> pq;
for(int i = 1;i<=n;i++){
if(cnt[i]==0){
pq.push({v[i],i});
}
}
vector<int> ans(n+1);
int k = 1;
while (!pq.empty()) {
int val = pq.top().second;
pq.pop();
ans[k++]=val;
for(int i = 0;i<vv[val].size();i++){
int x = vv[val][i];
cnt[x]--;
if(cnt[x]==0){
pq.push({v[x],x});
}
}
}
for(int i = 1;i<=n;i++){
cout<<ans[i]<<" ";
}
}