#include<iostream> #include<queue> #include<cstdio> #include<cstring> using namespace std; typedef struct v { int vex; v *next; }V; typedef struct h { int indegree; v *next; }H; H team[10010]; V *p; int main() { int i,n,m,a,b,cnt; priority_queue<int,vector<int>,greater<int> > q; while(cin>>n>>m) { memset(team,0,sizeof(team)); for(i=1;i<=n;i++) { } while(m--) { cin>>a>>b; team[b].indegree++; p=new V; p->vex=b; p->next=team[a].next; team[a].next=p; } for(i=1;i<=n;i++) { if(team[i].indegree==0) q.push(i); } cnt=0; while(!q.empty()) { a=q.top(); q.pop(); if(cnt) cout<<' '; cnt++; cout<<a; for(p=team[a].next;p!=0;p=p->next) { b=p->vex; if(--team[b].indegree==0) q.push(b); } } cout<<endl; } return 0; }
《拓扑排序》hdu acm 5.2.4 c++优先队列 邻接表
最新推荐文章于 2019-08-07 19:40:23 发布