Pagini recente » Cod sursa (job #2272080) | Cod sursa (job #1903591) | Borderou de evaluare (job #2507132) | Cod sursa (job #800321) | Cod sursa (job #3317138)
#include<fstream>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std ;
ifstream cin("sortaret.in") ;
ofstream cout("sortaret.out");
int main(){
int n , m ;
cin>>n>>m;
int x , y ;
vector<vector<int> > v (n+1);
vector<int> degree(n+1,0);
queue<int> q ;
for(int i = 1 ; i <= m ; i ++ ){
cin>>x>>y;
v[x].push_back(y);
}
for(int i = 1 ; i <= n ; i ++ )
for(int j = 0 ; j < v[i].size() ; j ++ )
degree[v[i][j]] ++ ;
for(int i = 1 ; i <= n ; i ++ )
if(degree[i] == 0 )
q.push(i);
while(!q.empty()){
int fr = q.front() ;
q.pop() ;
cout<<fr<< ' ';
for(int j = 0 ; j < v[fr].size() ; j ++ )
{
degree[v[fr][j]] -- ;
if(!degree[v[fr][j]])
q.push(v[fr][j]);
}
}
return 0 ;
}