Pagini recente » Cod sursa (job #2914975) | Cod sursa (job #3221559) | Cod sursa (job #1560193) | Cod sursa (job #3186782) | Cod sursa (job #2652069)
#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,c1,c2,i;
};
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].c2*=v[i].c1;
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;
a[x]=y1;
}
if(n1==n-1)
break;
}
for(int i=1;i<=n1;i++)
fout<<v1[i]<<"\n";
return 0;
}