Cod sursa(job #1414531)

Utilizator S7012MYPetru Trimbitas S7012MY Data 2 aprilie 2015 18:23:02
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <vector> 
#include <list> 
#include <map> 
#include <set> 
#include <queue> 
#include <deque> 
#include <stack> 
#include <bitset> 
#include <algorithm> 
#include <functional> 
#include <numeric> 
#include <utility> 
#include <sstream> 
#include <iostream> 
#include <fstream>
#include <iomanip>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <ctime>
#define x first
#define y second
#define LL long long
#define DN 50005
#define MOD 1000000007
using namespace std;
 
typedef pair<int, int> per;
typedef vector<int>::iterator it;
typedef set<int>::iterator is;

ifstream f("sortaret.in");
ofstream g("sortaret.out");

int n,m;
vector<int> gr[DN];
vector<int> st;
bitset<DN> viz;

void dfs(int s) {
  viz[s]=1;
  for(it i=gr[s].begin(); i!=gr[s].end(); ++i) if(!viz[*i]){
    dfs(*i);
  }
  st.push_back(s);
}

int main() {
  f>>n>>m;
  for(;m--;) {
    int a,b; f>>a>>b;
    gr[a].push_back(b);
  }
  for(int i=1; i<=n; ++i) if(!viz[i]) dfs(i);
  for(int i=st.size()-1; i>=0; --i) g<<st[i]<<' ';
}