Cod sursa(job #1526524)

Utilizator raulmuresanRaul Muresan raulmuresan Data 16 noiembrie 2015 20:19:14
Problema Lazy Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>
#include <algorithm>


using namespace std;
ifstream fin("lazy.in");
ofstream fout("lazy.out");

int i,aux,n,k,j,p,s,unu,t,m,doi,x,mini,maxi,sol,cont,viz[100010],y,cost;

struct coada
{
    int x,y,ind;
    long long int c1,c2;
}c[200010];


bool cmp(coada i,coada j)
{
    if(i.c1== j.c1)
        return i.c2<j.c2;
    return i.c1<j.c1;
}

int parinte(int p)
{
    if(viz[p]==p )return p;
     viz[p]=parinte(viz[p]);
    return viz[p];
}

void unite(int i,int j)
{
    viz[parinte(i)]=parinte(j);
}

int main()
{
    //scanf("%d%d",&n,&m);
    fin>>n>>m;
    for(i=1;i<=m;i++)
    {
        fin>>c[i].x>>c[i].y>>c[i].c1>>c[i].c2;
        c[i].ind=i;
    }

    sort(c+1,c+m+1,cmp);
    for(i=1;i<=n;i++)
    {
        viz[i]=i;
    }

    cont=0;
    k=0;
    for(i=1;i<=m;i++)
    {
        if(parinte(c[i].x) != parinte(c[i].y))
        {

           unite(c[i].x,c[i].y);
           fout<<c[i].ind<<"\n";


        }

    }
    for(i=1;i<=m;i++)
    {
        //fout<<c[i].ind<<" "<<c[i].x<<" "<<c[i].y<<" "<<c[i].c1<<" "<<c[i].c2<<"\n";
        //printf("%d %d %d\n",a[i].ind,a[i].x,a[i].y,a[i].c1,a[i].c2);
    }

}