Pagini recente » Cod sursa (job #1913029) | Cod sursa (job #1910869) | Cod sursa (job #534032) | Cod sursa (job #2035888) | Cod sursa (job #2423072)
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
#define nmax 50100
vector <int> graph[nmax];
int n, m, deg[nmax],q[nmax];
ifstream f("sortaret.in");
ofstream g("sortaret.out");
void read_data() {
int x, y;
f >> n >> m;
for( int i = 0; i < m; i++ ) {
f >> x >> y;
graph[x].push_back(y);
deg[y]++;
}
}
void solve() {
int i, x;
vector<int>::iterator it;
for( x = 1; x <= n; x++ )
if( deg[x] == 0 )
q[++q[0]] = x;
for( i = 1; i <= n; i++) {
x = q[i];
for( it = graph[x].begin(); it != graph[x].end(); ++it ) {
deg[*it]--;
if(deg[*it] == 0 )
q[ ++q[0] ] = *it;
}
}
}
void print_data() {
int i;
for( int i = 1; i <= n; i++)
g << q[i] << " ";
}
int main() {
read_data();
solve();
print_data();
return 0;
}