Cod sursa(job #1712245)

Utilizator AntoniooMacovei Antonio Antonioo Data 2 iunie 2016 14:54:08
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <stdio.h>
#include <vector>
using namespace std;
vector <int> v[50001];
int viz[50001], sol[50001], n, k;

void dfs(int nod)
{
  int i;
  viz[nod] = 1;
  for(i=0;i<v[nod].size();i++) {
    if(!viz[v[nod][i]])
      dfs(v[nod][i]);
  }
  sol[++k] = nod;
}

int main()
{
  freopen("sortaret.in","r",stdin);
  freopen("sortaret.out","w",stdout);
  int m, i, x, y;
  scanf("%d%d",&n,&m);
  for(i=1;i<=m;i++) {
    scanf("%d%d",&x,&y);
    v[x].push_back(y);
  }

  for(i=1;i<=n;i++) {
    if(!viz[i])
      dfs(i);
  }
  for(i=n;i>=1;i--)
    printf("%d ",sol[i]);
  return 0;
}