Cod sursa(job #2652421)

Utilizator qThunderStefan Durlanescu qThunder Data 24 septembrie 2020 21:15:17
Problema Lazy Scor 100
Compilator cpp-64 Status done
Runda apmtraining Marime 1.04 kb
#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;
}