Cod sursa(job #2313661)

Utilizator BotezatuGabrielBotezatu Gabriel Eugen BotezatuGabriel Data 7 ianuarie 2019 11:59:40
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>
#define N 50005
using namespace std;

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

vector<int> G[N];///graful
int n,m;
bool viz[N];///dfs
stack<int> s;///mem in ord a timpilor de executie

void read()
{int i,x,y;
 fin>>n>>m;
 for(i=1;i<=m;++i)
 {fin>>x>>y;
  G[x].push_back(y);
 }
}

void dfs(int x)
{viz[x]=1;
for(int i=0;i<G[x].size();++i)
    if(!viz[G[x][i]])
       dfs(G[x][i]);
s.push(x);


}

void sortaretopologica()
{int i;
 for(i=1;i<=n;++i)
    if(!viz[i])dfs(i);
}
void print()
{while(!s.empty())
 {fout<<s.top()<<" ";
  s.pop();
 }

}

int main()
{   read();
    sortaretopologica();
    print();

    return 0;
}