首页 > 编程语言 > 详细

HDU1285(拓扑排序裸题

时间:2019-11-23 18:23:56      阅读:76      评论:0      收藏:0      [点我收藏+]

。。被多组测试坑了一波

 1 #include<iostream>
 2 #include<vector>
 3 #include<queue>
 4 using namespace std;
 5 typedef long long ll;
 6 const int N = 1e3;
 7 vector<int>edge[N];
 8 vector<int> ans;
 9 priority_queue<int, vector<int>, greater<int> >q;
10 int n,m,l,r,in[N];
11 int main(){
12     ios::sync_with_stdio(0);
13     while(cin>>n>>m){
14         
15     ans.clear();while(!q.empty())q.pop();
16     for(int i = 1;i <= n;++i){in[i] = 0;edge[i].clear();}
17     
18     for(int i = 1;i <= m;++i){
19         cin>>l>>r;
20         edge[l].push_back(r);in[r]++;
21     }
22     for(int i = 1;i <= n;++i)if(in[i]==0)q.push(i);
23     while(!q.empty()){
24         int p = q.top();q.pop();
25         ans.push_back(p);
26         for(int i = 0; i < edge[p].size();++i){
27             int y = edge[p][i];in[y]--;
28             if(!in[y])q.push(y); 
29         }
30     }
31     for(int i = 0;i < n;++i){
32         if(i!=n-1)cout<<ans[i]<<" ";
33         else cout<<ans[i]<<endl;
34     }
35     }
36     return 0;
37 }

 

HDU1285(拓扑排序裸题

原文:https://www.cnblogs.com/h404nofound/p/11918749.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!