《拓扑排序》hdu acm 5.2.4 c++优先队列 邻接表

来源:互联网 发布:个人淘宝账号查询 编辑:程序博客网 时间:2024/06/05 17:00
#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;}
0 0