Pagini recente » Cod sursa (job #1873869) | Cod sursa (job #1016148) | Cod sursa (job #1513618) | Cod sursa (job #1681614) | Cod sursa (job #1241009)
#include <fstream>
#include <vector>
using namespace std;
vector<int> graf[300000];
int n, m, in[200000], out[200000], sol[300000];
int timp = 0;
void df(int nod) {
in[nod] = ++timp;
for(vector<int> :: iterator it = graf[nod].begin(); it < graf[nod].end(); it ++ ) {
if (in[*it] == 0) {
df(*it);
}
}
out[nod] = ++ timp;
sol[timp] = nod;
}
void solve() {
for (int i = 1; i <= n ; i++) {
if (in[i] == 0){
df(i);
}
}
}
void afisare() {
ofstream g("sortaret.out");
for (int i = 2*n; i >0; i --) {
if (sol[i] != 0) {
g << sol[i] << ' ';
}
}
g.close();
}
void citire() {
ifstream f("sortaret.in");
f>> n >> m ;
int x, y;
for ( int i = 1 ; i <= m ; i++) {
f >> x >>y;
graf[x].push_back(y);
}
f.close();
}
int main()
{
citire();
solve();
afisare();
}