Pagini recente » Clasament FMI No Stress 3 | Cod sursa (job #1267075) | Cod sursa (job #1016369) | Cod sursa (job #1266216) | Cod sursa (job #1248465)
#include <algorithm>
#include <fstream>
#include <iterator>
#include <vector>
using namespace std;
void dfs(
const size_t v,
vector<bool>& visited,
const vector<vector<size_t>>& G,
vector<size_t>& tsort) {
visited[v] = true;
for (int u : G[v]) if (!visited[u])
dfs(u, visited, G, tsort);
tsort.push_back(v+1);
}
int main() {
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int n, m;
fin >> n >> m;
vector<vector<size_t>> G(n);
for (; m; --m) {
int u, v;
fin >> u >> v;
G[u-1].push_back(v-1);
}
vector<bool> visited(n, false);
vector<size_t> tsort;
for (int v = 0; v < G.size(); ++v) if (!visited[v])
dfs(v, visited, G, tsort);
reverse_copy(tsort.begin(), tsort.end(), ostream_iterator<size_t>(fout, " "));
fout << endl;
return 0;
}