Cod sursa(job #2028777)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 28 septembrie 2017 17:22:32
Problema Lazy Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
# include <fstream>
# include <algorithm>
# define DIM 200010
# define a first.first.first
# define b first.first.second
# define c first.second
# define d second.first
# define e second.second
using namespace std;
ifstream fin("lazy.in");
ofstream fout("lazy.out");
pair<pair<pair<int,int>,long long>,pair<long long,int> > sor[DIM];
int t[DIM],sol[DIM],n,m,i,ra,rb;
int rad(int x){
    int y=x;
    while(t[x]>0)
        x=t[x];
    while(t[y]>0){
        int aux=y;
        y=t[y];
        t[aux]=x;
    }
    return x;
}
int main () {
    fin>>n>>m;
    for(i=1;i<=n;i++)
        t[i]=-1;
    for(i=1;i<=m;i++){
        fin>>sor[i].c>>sor[i].d>>sor[i].a>>sor[i].b;
        sor[i].b=-sor[i].b;
        sor[i].e=i;
    }
    sort(sor+1,sor+m+1);
    for(i=1;i<=m;i++){
        ra=rad(sor[i].c);
        rb=rad(sor[i].d);
        if(ra!=rb){
            if(t[ra]<t[rb]){
                t[ra]+=t[rb];
                t[rb]=ra;
            }
            else{
                t[rb]+=t[ra];
                t[ra]=rb;
            }
            fout<<sor[i].e<<"\n";
        }
    }
    return 0;
}