Cod sursa(job #1847005)

Utilizator Garen456Paun Tudor Garen456 Data 14 ianuarie 2017 11:08:47
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
#define nmax 50001
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int n,m,viz[nmax];
stack<int>S;
vector<int>V[nmax];
void Citire()
{ fin>>n>>m;
int i,x,y;
for(i=1;i<=m;i++)
{ fin>>x>>y;
   V[x].push_back(y);

}

}
void DFS(int x)
{ viz[x]=1;
 vector<int>::iterator it;
 for(it=V[x].begin();it!=V[x].end();++it)
    if(viz[*it]==0)
     DFS(*it);
    S.push(x);
}

int main()
{
    Citire();
    int i;
    for(i=1;i<=n;i++)
        if(!viz[i]) DFS(i);
    while(!S.empty())
    { fout<<S.top()<<" ";
        S.pop();
    }

    return 0;
}