Pagini recente » Cod sursa (job #350155) | Cod sursa (job #760609) | Cod sursa (job #533307) | Cod sursa (job #1584452) | Cod sursa (job #3157422)
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
typedef long long ll;
vector<ll> sortaretopologica(vector<vector<ll>> &vec)
{
//indexare de la 0, daca indexare de la 1, se elimina primul din rezultat
vector<ll> deg(vec.size()),rez;
ll x,i;
for(i=0;i<vec.size();i++)for(ll x:vec[i])deg[x]++;
for(i=0;i<deg.size();i++)if(deg[i]==0)rez.emplace_back(i);
for(i=0;i<rez.size();i++)for(ll x:vec[rez[i]]){deg[x]--;if(deg[x]==0)rez.emplace_back(x);};
return rez;
}
int main()
{
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
ll n,m,a,b,i,j;
cin>>n>>m;
vector<vector<ll>> vec(n+1);
for(i=1;i<=m;i++)cin>>a>>b,vec[a].push_back(b);
vector<ll> rez=sortaretopologica(vec);
for(ll x:rez)if(x!=0)cout<<x<<' ';
return 0;
}