Cod sursa(job #1046000)

Utilizator mikeshadowIon Complot mikeshadow Data 2 decembrie 2013 16:09:53
Problema Sortare topologica Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <string.h>
 
#define min(a,b) ((a<b)?a:b)
#define max(a,b) ((a<b)?b:a)
#define abs(a) ((a<0)?-a:a)
 
#define INF 1000001
 
using namespace std;
 
#ifndef TEST
ifstream fin ("sortaret.in");
ofstream fout ("sortaret.out");
#else
ifstream fin ("input.txt");
ofstream fout ("output.txt");
#endif
 
#define MAXN 50000
 
int n,m; 

vector<int> L,S;

char a[MAXN];

vector<int> E[MAXN];

void DFS(int x)
{
	if (a[x]) return;
	a[x]=1;
	for (int i=0; i<E[x].size(); i++)
	{
		DFS(E[x][i]);
	}
	L.push_back(x);
	S.erase( find ( S.begin(), S.end(), x));
}
 
int main()
{
	memset(a,0,sizeof(a));
    fin>>n>>m;

	for (int i=0; i<n; i++)
		S.push_back(i);
  
    for (int i=0; i<m; i++)
    {
        int x,y;
        fin>>y>>x;
		E[x-1].push_back(y-1);        
    }

	while (!S.empty())
	{
		int t;
		t = S.front();
		DFS(t);
	}
 
    for (int i=0; i<n; i++)
        fout<<L[i]+1<<' ';
 
    return 0;
}