Cod sursa(job #925500)

Utilizator sandruSandru Petru-Ionut sandru Data 24 martie 2013 16:29:36
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
long n,m,vizitat[50001];
long nr;
vector <long> vec[50001];
ifstream f("sortaret.in");
ofstream g("sortaret.out");

void citire()
{
	f>>n>>m;
	for(long i=1;i<=m;i++)
	{
		long x,y;
		f>>x>>y;
		vec[y].push_back(x);
	}
}

void sterge(long k)
{
	for(long i=1;i<=n;i++)
	{
		int ok=0;
		if(vec[i].size()!=0)
		{
			long j=vec[i].size();
			for(long l=0;l<j;l++)
			{
				if(vec[i][l]==k)
				{
					vec[i][l]=vec[i][l+1];
					ok=1;
				}
			}
			if(ok==1)
			    vec[i].pop_back();
		}
	}
}

void sortare_topologica()
{
	for(long i=1;i<=n;i++)
	{
		if(vec[i].size()==0 && vizitat[i]==0)
		{  nr++;
			g<<i<<" ";
			vizitat[i]=1;
			sterge(i);
		}
	}
}




int main()
{
	citire();
	while(nr<n)
	sortare_topologica(); 
    f.close();
	g.close();
	return 0;
}