Pagini recente » Cod sursa (job #349939) | Cod sursa (job #1521576) | Cod sursa (job #2920652) | Cod sursa (job #1398748) | Cod sursa (job #1143847)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
const int Nmax = 50005;
vector<int> G[Nmax];
queue<int> Q;
int Ord[Nmax];
int deg[Nmax];
int main()
{
ifstream f ("sortaret.in");
ofstream g ("sortaret.out");
int N, M, a, b;
f >> N >> M;
for (int i = 0; i < N; i++) deg[i] = 0;
for (int i = 0; i < M; i++) {
f >> a >> b;
G[a-1].push_back(b-1);
deg[b-1]++;
}
for (int i = 0; i < N; i++)
if (!deg[i]) Q.push(i);
int n = 0;
while(!Q.empty()) {
a = Q.front(); Q.pop();
Ord[n++] = a;
for (size_t i = 0; i < G[a].size(); i++) {
deg[G[a][i]]--;
if (!deg[G[a][i]]) Q.push(G[a][i]);
}
}
for (int i = 0; i < N; i++)
g << Ord[i] + 1 << ' ';
g << '\n';
return 0;
}