uva10305

#include <bits/stdc++.h>
using namespace std;
const int maxn=119;
vector<int>vec[maxn];
int have[maxn];
int c[maxn];
int n,m;
int out[maxn];
int t=0;
void bfs(int k)
{
    have[k]=1;
    for(vector<int> ::iterator it=vec[k].begin();it!=vec[k].end();it++)
        if(!have[*it])
        bfs(*it);
    out[t++]=k;
}
int main()
{
    while(scanf("%d%d",&n,&m)&&(n||m))
    {t=0;
   memset(have,0,sizeof(have));
   memset(c,0,sizeof(c));
   for(int i=1;i<=n;i++)vec[i].clear();
   for(int i=0;i<m;i++)
   {
       int x,y;
       cin>>x>>y;
       vec[y].push_back(x);
   }
   for(int i=1;i<=n;i++)
    if(!have[i])
    bfs(i);
   for(int i=0;i<n;i++)
    cout<<out[i]<<(i==n-1? '\n':' ');
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/zhangzhenjunaixuxin/article/details/80396963