Cod sursa(job #541736)

Utilizator Ionutz_LalaLala Marius Ionut Ionutz_Lala Data 25 februarie 2011 13:46:35
Problema Lazy Scor 10
Compilator cpp Status done
Runda Romanian Master in Mathematics and Sciences 2011, Ziua 1 Marime 0.71 kb
#include<fstream>
using namespace std;

ifstream in("lazy.in");
ofstream out("lazy.out");

struct drum
{
	int a,b,poz;
	long long c1,c2;
} d[200005];

bool cmp(drum x,drum y)
{
	if(x.c1<y.c1) return true;
	if(x.c1==y.c1&&x.c2>y.c2) return true;
	return false;
}

int n,m,i,j,viz[200005],traseu[200005],k;

int main()
{
	in>>n>>m;
	for(i=1;i<=m;i++)
	{
		in>>d[i].a>>d[i].b>>d[i].c1>>d[i].c2;
		d[i].c2=(1-d[i].c1)*d[i].c2;
		d[i].poz=i;
		viz[i]=i;
	}
	sort(d+1,d+m+1,cmp);
	for(i=1,k=0;k<m-1;i++)
	{
		if(viz[d[i].a]!=viz[d[i].b])
		{
			traseu[++k]=d[i].poz;
			for(j=1;j<=n;j++)
				if(viz[j]==d[i].b) viz[j]=d[i].a;
		}
	}
	for(i=1;i<m;i++)
		out<<traseu[i]<<"\n";
	return 0;
}