HDU-1285

#include <stdio.h>
#include <stdlib.h>
int main()
{
 int n,m;
 int i,j;
 int a,b;
 int k;
 int i_flag;
 while(scanf("%d%d",&n,&m)!=EOF)
{  int  flag[505]={0};
    int e[505]={0};                             //表示有后继的个数
     int s[505];                             //遵储前驱的个数;
     int pre[505][505]={0};                   //后继
    int sigh[505]={0};                       //1表示有后继,0表示没有
    for(i=1;i<=m;i++)
    {
        scanf("%d%d",&a,&b);
        sigh[b]=1;
        pre[a][e[a]]=b;
        s[b]++;
        e[a]++;
    }
    i_flag=0;
    for(j=1;j<=n;j++)
   {
    for(i=1;i<=n;i++)
    {
        if(sigh[i]==0&&flag[i]==0)
        {    k=0;
        if(i_flag==0){
            printf("%d",i);
            i_flag++;
        }
        else
            printf(" %d",i);
            while(pre[i][k]!=0)
            {
                      s[pre[i][k]]--;
                      if(s[pre[i][k]]==0)
                            sigh[pre[i][k]]=0;
                      k++;
            }
             flag[i]=1;
            break;
        }
    }
   }
   printf("\n");
}
return 0;
}

猜你喜欢

转载自blog.csdn.net/xxf_is_girl_gad/article/details/80716785
今日推荐