Pagini recente » Cod sursa (job #444496) | Cod sursa (job #1433361) | Cod sursa (job #2047593) | Cod sursa (job #490363) | Cod sursa (job #3216894)
/**
*Krizbai Matyas
*513
*kmim2369
**/
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
void beolvas(int &n, vector<vector<int>> &adj) {
ifstream fin("sortaret.in");
int m;
fin >> n >> m;
adj.resize(n+1);
for(int i=0; i<m; i++) {
int u, v;
fin >> u >> v;
adj[u].push_back(v);
}
fin.close();
}
void dfs(int from, int n, vector<vector<int>> &adj, vector<bool> &vis, vector<pair<int, int>> &ans, int &time) {
time++;
vis[from]=true;
for(auto to : adj[from]) {
if(vis[to]==false) {
dfs(to, n, adj, vis, ans, time);
}
}
time++;
ans.push_back(make_pair(from, time));
}
bool cmp(const pair<int, int> &a, const pair<int, int> &b) {
return a.second>b.second;
}
int main() {
int n;
vector<vector<int>> adj;
beolvas(n, adj);
vector<bool> vis(n+1);
vector<pair<int, int>> ans;
int time=0;
for(int i=1; i<=n; i++) {
if(!vis[i]) {
dfs(i, n, adj, vis, ans, time);
}
}
sort(ans.begin(), ans.end(), cmp);
ofstream fout("sortaret.out");
for(auto it : ans) {
fout << it.first << ' ';
}
return 0;
}