Cod sursa(job #544033)

Utilizator lianaliana tucar liana Data 28 februarie 2011 22:10:24
Problema Lazy Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>
#include <algorithm>
using namespace std;
#define nmax 200005
struct element{long long a, b, c1, c2, poz;};
long long i, n, m, p1, p2, p[nmax];
element v[nmax];

bool cmp(element a, element b)
{
	return ((a.c1<b.c1) || ((a.c1==b.c1)&&(a.c2>b.c2)));
}

long int par(long int a)
{
	if (p[a]==a)
		return a;
	else
		return par(p[a]);
}

int main()
{
	freopen("lazy.in","r",stdin);
	freopen("lazy.out","w",stdout);
	scanf("%ld %ld",&n,&m);
	for (i=1;i<=m;i++)
	{
		scanf("%lld %lld %lld %lld", &v[i].a,&v[i].b,&v[i].c1,&v[i].c2);
		v[i].poz=i;
		p[v[i].a]=v[i].a; p[v[i].b]=v[i].b;
	}
	sort(v+1,v+1+m,cmp);
	for (i=1;i<=m;i++)
	{
		p1=par(v[i].a); p2=par(v[i].b);
		if (p1!=p2)
		{
			p[p2]=p1;
			printf("%lld\n",v[i].poz);
		}
	}
	return 0;
}