Cod sursa(job #1139134)

Utilizator x3medima17Dima Savva x3medima17 Data 10 martie 2014 21:28:15
Problema Progresie Scor 0
Compilator cpp Status done
Runda Arhiva ICPC Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <list>
#include <vector>
using namespace std;

ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

typedef list<int> list_of_integers;
list_of_integers order;
int tick=0;

void dfs(int k, vector<list_of_integers> &nodes, vector<int> &ticks)
{
    //cout<<k<<endl;
    if(ticks.at(k)) return;
    order.push_front(k);
    ticks.at(k) = ++tick;
    for(list<int>::iterator it = nodes.at(k).begin();it!=nodes.at(k).end();it++)
    {
        if(!ticks.at((*it))) dfs((*it),nodes,ticks);
    }
}

int main()
{

    int n,m;
    fin>>n>>m;
    vector<list_of_integers> nodes (n+2);
    vector<int> ticks(n+2,0);
    for(int i=1;i<=m;i++)
    {
        int x,y;
        fin>>x>>y;
        nodes.at(x).push_front(y);
    }
    for(int i=1;i<=n;i++)
        dfs(i,nodes,ticks);

    for(list_of_integers::iterator it = order.begin();it!=order.end();it++)
        cout<<(*it)<<" ";
}