Cod sursa(job #1252494)

Utilizator DanyPrvPirvoaica Daniel DanyPrv Data 30 octombrie 2014 20:17:03
Problema Lazy Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#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;
}