Pagini recente » Cod sursa (job #817603) | Cod sursa (job #903381) | Cod sursa (job #2825081) | Cod sursa (job #3263572) | Cod sursa (job #1366477)
#include <cstdio>
#include <vector>
#define nmax 50010
using namespace std;
vector < int > graph[nmax];
int n,v[nmax],res[nmax];
void read();
void topsort();
void print();
int main(){
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
read();
topsort();
print();
return 0;
}
void read(){
int m;
scanf("%d %d ",&n,&m);
int x,y;
while(m--){
scanf("%d %d ",&x,&y);
graph[x].push_back(y);
v[y]++;
}
}
void topsort(){
vector <int> :: iterator it2;
for(int i = 1;i <= n;i++)if(!v[i])res[++res[0]] = i;
int x;
for(int i = 1;i <= n;i++){
x = res[i];
for(it2 = graph[x].begin();it2 != graph[x].end();++it2){
v[*it2]--;
if(!v[*it2])res[++res[0]] = *it2;
}
}
}
void print(){
for(int i = 1;i <= n;i++)printf("%d ",res[i]);
printf("\n");
}