#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]<<" ";     } } 第三题
点赞 2

相关推荐

03-17 15:08
已编辑
腾讯_后端开发(准入职员工)
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客网
牛客企业服务