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