Pagini recente » Cod sursa (job #2874299) | Cod sursa (job #2329914) | Cod sursa (job #2070048) | Cod sursa (job #2216178) | Cod sursa (job #897153)
Cod sursa(job #897153)
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
#define nmax 50005
using namespace std;
int n, m;
bool vizitat[nmax];
vector <int> vecin[nmax];
vector <int> sol;
void dfs(int curent) {
vizitat[curent] = true;
for(int i=0; i<vecin[curent].size(); i++)
if(!vizitat[vecin[curent][i]]) dfs(vecin[curent][i]);
sol.push_back(curent);
//pot baga elementul curent in solutie doar dupa ce am rezolvat toate elementele ce trebuiesc facute inaintea lui
}
int main() {
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int i, j, a, b;
f>>n>>m;
for(i=1; i<=m; i++) {
f>>a>>b;
vecin[a].push_back(b);
}
memset(vizitat, 0, nmax*sizeof(bool));
for(i=1; i<=n; i++)
if(!vizitat[i]) dfs(i);
for(i=sol.size()-1; i>=0; i--) g<<sol[i]<<" "; g<<"\n";
return 0;
}