Pagini recente » Cod sursa (job #2599195) | Cod sursa (job #269357) | Cod sursa (job #509777) | Cod sursa (job #327359) | Cod sursa (job #1252494)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("lazy.in");
ofstream g("lazy.out");
int t[200001],i,n,k,nr,sol[200000];
struct df{
int a;
int b;
int c;
int p;
int poz;
}v[200001];
int cmp(df x, df y){
if(x.c!=y.c)
return x.c<y.c;
return x.p>y.p;
}
int tata(int nod){
while(t[nod]>0)
nod=t[nod];
return nod;
}
int main()
{
f>>n>>k;
for(i=1;i<=k;i++){
f>>v[i].a>>v[i].b>>v[i].c>>v[i].p;
v[i].poz=i;
}
sort(v+1,v+k+1,cmp);
for(i=1;i<=n;i++){
t[i]=-1;
}
for(i=1;i<=k;i++){
int t1=tata(v[i].a);
int t2=tata(v[i].b);
if(t1!=t2){
if(t[t1]>t[t2]){
t[t2]+=t[t1];
t[t1]=t2;
}
else{
t[t1]+=t[t2];
t[t2]=t1;
}
nr++;
sol[i]=v[i].poz;
if(nr==n-1)
break;
}
}
for(i=1;i<=nr;i++)
g<<sol[i]<<'\n';
return 0;
}