Pagini recente » Borderou de evaluare (job #2627967) | Cod sursa (job #2916318) | Cod sursa (job #2627999) | Borderou de evaluare (job #2598804) | Cod sursa (job #2652420)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("lazy.in");
ofstream fout("lazy.out");
int n,n1,v1[200004],a[200004],m;
struct idk
{
int x,y,i;
long long c1,c2;
};
idk v[200004];
bool cmp(idk x, idk y)
{
if(x.c1!=y.c1)
return x.c1<y.c1;
return x.c2>y.c2;
}
int arad(int x)
{
while(a[x]!=0)
x=a[x];
return x;
}
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
fin>>v[i].x>>v[i].y>>v[i].c1>>v[i].c2;
v[i].i=i;
}
sort(v+1,v+m+1,cmp);
for(int i=1;i<=m;i++)
{
int x=v[i].x;
int y=v[i].y;
int x1=arad(x);
int y1=arad(y);
if(x1!=y1)
{
v1[++n1]=v[i].i;
if(x1<y1)
{
a[y1]+=a[x1];
a[x1]=y1;
}
else
{
a[x1]+=a[y1];
a[y1]=x1;
}
}
}
for(int i=1;i<=n1;i++)
fout<<v1[i]<<"\n";
return 0;
}