Pagini recente » Cod sursa (job #2661053) | Cod sursa (job #3231264) | Cod sursa (job #1119642) | Cod sursa (job #2714530) | Cod sursa (job #930038)
Cod sursa(job #930038)
/*
Sa se citeasca un graf orientat fara bucle si fara arce multiple G=(V,E)
*/
#include<fstream>
#include<vector>
#define maxn 50001
using namespace std;
int N,M;
vector<int> V[maxn];
vector<int> S;
vector<int> Rez;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
void DF( int nod )
{
if(S[nod])
Rez.push_back(nod);
S[nod] = 2;
for (vector<int>::iterator it=V[nod].begin();it!=V[nod].end();it++)
if ( S[*it] == 1 )
DF( *it );
S[nod] = 3;
}
void sortareTopologica(){
for(int i=1;i<=N;i++)
if(!S[i])
Rez.push_back(i);
for(int i=1;i<=N;i++)
if(!S[i])
DF(i);
}
void citire(){
int x,y;
f>>N>>M;
S.resize(N+1);
for(int i=1;i<=M;i++){
f>>x>>y;
V[x].push_back(y);
S[y]=1;
}
}
void afis(){
for(int i=0;i<=Rez.size()-1;i++)
g<<Rez[i]<<' ';
g<<'\n';
}
int main(){
citire();
sortareTopologica();
afis();
return 0;
}