Cod sursa(job #732516)

Utilizator IliesiDanielDaniel IliesiDaniel Data 10 aprilie 2012 16:10:49
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <iostream>
#include <fstream>

using namespace std;

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

long a[50000][50000],s[50000],v[50000],N,M,nr;

void citire()
{
	long i,x,y;

	f>>N>>M;

	for(i=1;i<=M;i++)
		{
			f>>x>>y;
			if(x>=1 && x<=N && y>=1 && y<=N)
				a[x][y]=a[y][x]=1;
		}

	f.close();
}

void sortare(int vf)
{
	int u;

	s[vf]=1;

	nr++;
	u=nr;
	v[u]=vf;

	for(u=1;u<=N;u++)
		if(a[vf][u]	&&	!s[u])
			sortare(u);
}

int main()
{
	int i,j;

	citire();

	for(i=1;i<=N;i++)
	{
		nr=0;
		for(j=1;j<=N;j++)
			s[j]=v[j]=0;
		sortare(i);
		if(nr==N)	break;
	}

	for(i=1;i<=N;i++)
		g<<v[i]<<" ";

	g.close();

    return 0;
}