Pagini recente » Cod sursa (job #2338524) | Cod sursa (job #66747) | Cod sursa (job #2356766) | Cod sursa (job #2670093) | Cod sursa (job #2445902)
#include<cstdio>
#include<vector>
#define MAX_N 50000
using namespace std;
vector<int>g[MAX_N+1];
int st[MAX_N], n, m, vf;
bool used[MAX_N+1];
void readGraph() {
int i, x, y;
FILE* fin = fopen("sortaret.in","r");
fscanf(fin,"%d%d",&n,&m);
for(i = 0; i < m; i++) {
fscanf(fin,"%d%d",&x,&y);
g[x].push_back(y);
}
fclose(fin);
}
void DFS(int x) {
used[x] = true;
for(auto i : g[x])
if(!used[i])
DFS(i);
st[vf++] = x;
}
void DFS_master() {
for(int i = 1; i <= n; i++)
if(!used[i])
DFS(i);
}
void printTopologicalSort() {
FILE* fout = fopen("sortaret.out","w");
for(int i = vf-1; i >= 0; i--)
fprintf(fout,"%d ",st[i]);
fprintf(fout,"\n");
fclose(fout);
}
int main() {
readGraph();
DFS_master();
printTopologicalSort();
return 0;
}