Pagini recente » Cod sursa (job #700590) | Cod sursa (job #590346) | Cod sursa (job #2870102) | Cod sursa (job #590358) | Cod sursa (job #2653035)
#include <fstream>
#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
vector<int> sortaret(int N, const vector<vector<int>> &edges) {
vector<int> L;
vector<int> S;
vector<int> inedges(N);
for (int i = 0; i < N; ++i) {
for (int j : edges[i])
inedges[j]++;
}
for (int i = 0; i < N; ++i) {
if (inedges[i] == 0) {
S.push_back(i);
}
}
while (!S.empty()) {
int n = S.back();
S.pop_back();
L.push_back(n);
for (int m : edges[n]) {
inedges[m]--;
if (inedges[m] == 0)
S.push_back(m);
}
}
return L;
}
int main(int argc, char const *argv[])
{
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int N, M;
fin >> N >> M;
cout << N << ' ' << M << endl;
vector<vector<int>> edges(N);
for (int i = 0; i < M; ++i) {
int X, Y;
fin >> X >> Y;
edges[X-1].push_back(Y-1);
}
vector<int> L = sortaret(N, edges);
for (int n : L)
fout << n+1 << ' ';
fout << '\n';
return 0;
}