Pagini recente » Cod sursa (job #1370503) | Cod sursa (job #2058008) | Statistici Muraru George Cristian 323CB (muraru_george) | Cod sursa (job #624830) | Cod sursa (job #1687897)
#include <iostream>
#include <fstream>
#include <set>
#include <queue>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
set <int> G[50010];
set <int> :: iterator it;
queue <int> Q;
int Deg[50010], N, M;
void citire(){
int a,b;
f>>N>>M;
for(int i=1;i<=M;i++){
f>>a>>b;
if(G[a].find(b) == G[a].end()){
G[a].insert(b);
Deg[a]++;
}
}
}
void init_q(){
for(int i=1;i<=N;i++){
if(Deg[i]==0){
Q.push(i);
}
}
}
void sortare(){
while(Q.size()){
g<<Q.front()<<" ";
it = G[Q.front()].begin();
for( ; it != G[Q.front()].end(); it++){
Deg[*it]--;
if(Deg[*it] == 0){
Q.push(*it);
}
}
Q.pop();
}
}
int main()
{
citire();
init_q();
sortare();
return 0;
}