Cod sursa(job #926920)

Utilizator dan.ghitaDan Ghita dan.ghita Data 25 martie 2013 14:10:54
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
vector< vector<int> > v;
vector<int> c, o;
deque<int> ord;
deque<int>::iterator qt;
int n, m, a, b;
ifstream f("sortaret.in");
ofstream g("sortaret.out");

void citire(){
f>>n>>m;
v.resize(n+1);
//ord.resize(n+1);
c.resize(n+1);
for(int i=1; i<=m; ++i)
    f>>a>>b, v[a].push_back(b);
}

void df(int x){
c[x]=1;
vector<int>::iterator it;
for(it=v[x].begin(); it!=v[x].end(); ++it)
    if(!c[*it])
    df(*it);
    ord.push_back(x);

}
int main()
{
citire();
for(int i=1; i<=n; ++i)
    if(!c[i])
        df(i);

// for(it=o.end()-1;it!=o.begin();--it) cout<<*qt<<' ';
for(qt=ord.begin(); qt!=ord.end(); ++qt) g<<*qt<<' ';

g.close();
return 0;
}