#include<stdio.h>
#include<queue>
#define N 509
int in[N],sortq[N];
struct node{
int v;
int next;
}edg[N];
int heap[N],h;
void initi(int n)
{
int i;
for(i=0;i<=n;i++)
{
heap[i]=sortq[i]=-1;
in[i]=0;
}
h=0;
}
void add(int a,int b)
{
edg[h].v=b;
edg[h].next=heap[a];
heap[a]=h;
h++;
}
int main()
{
int n,m,c,k,id;
int i,p1,p2,j;
while(scanf("%d%d",&n,&m)!=EOF)
{
initi(n);
for(i=0;i<m;i++)
{
scanf("%d%d",&p1,&p2);
in[p2]++;
add(p1,p2);
}
c=n;
id=0;
while(c){
k=n;
for(i=1;i<=n;i++)
{
if(in[i]==0&&i<k)
{
k=i;
}
}
in[k]=-1;
sortq[id++]=k;
c--;
for(j=heap[k];j!=-1;j=edg[j].next)
{
in[edg[j].v]--;
}
}
printf("%d",sortq[0]);
for(i=1;i<n;i++)
printf(" %d",sortq[i]);
puts("");
}
}
hdu1285拓扑排序
最新推荐文章于 2018-07-28 17:52:50 发布