Pagini recente » Cod sursa (job #2139054) | Cod sursa (job #2510374) | Cod sursa (job #24013) | Cod sursa (job #2423288) | Cod sursa (job #1307346)
#include<cstdio>
#include<algorithm>
using namespace std;
struct drum{
int x;
int y;
int c;
int d;
int p;
}v[200100];
int n,m,i,j,ra,rb,nr,x[200100],t[200100];
FILE *f,*g;
int cmp(drum a,drum b){
if(a.c!=b.c)
return a.c<b.c;
else
return a.d<b.d;
}
int rad(int r){
while(t[r]>0){
r=t[r];
}
return r;
}
int main(){
f=fopen("lazy.in","r");
g=fopen("lazy.out","w");
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=m;i++){
fscanf(f,"%d%d%d%d",&v[i].x,&v[i].y,&v[i].c,&v[i].d);
v[i].p=i;
t[i]=-1;
}
sort(v+1,v+n+1,cmp);
for(i=1;i<=m;i++){
ra=rad(v[i].x);
rb=rad(v[i].y);
if(ra!=rb){
if(ra>rb){
t[ra]+=t[rb];
t[rb]=ra;
}
else{
t[rb]+=t[ra];
t[ra]=rb;
}
x[++nr]=v[i].p;
if(nr==n-1)
break;
}
}
for(i=1;i<=nr;i++){
fprintf(g,"%d\n",x[i]);
}
fclose(f);
fclose(g);
return 0;
}