Cod sursa(job #1373222)

Utilizator T.C.11Tolan Cristian T.C.11 Data 4 martie 2015 17:23:27
Problema Arbore partial de cost minim Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream fin("apm.in");
ofstream fout("apm.out");

int z,s[200001],n,m,i,j,sol,nr;

struct coce {int x,y,val,in;} v[400001];
bool cmp(coce a,coce b)
{
    if (a.val<b.val)
        return true;
    else
        return false;
}

void actualizare(int i)
{
    z=s[i];
    if (s[i]!=i)
        actualizare(s[i]);
    s[i]=z;
}

int main()
{
    fin>>n>>m;
    for (i=1;i<=m;i++)
        fin>>v[i].x>>v[i].y>>v[i].val;
    sort(v+1,v+1+m,cmp);
    for (i=1;i<=n;i++)
        s[i]=i;
    for (i=1;i<=m;i++)
    {
        actualizare(v[i].x);
        actualizare(v[i].y);
        if (s[v[i].x]!=s[v[i].y])
        {
            sol+=v[i].val;
            v[i].in=1;
            nr++;
            s[z]=s[v[i].x];
        }
    }
    fout<<sol<<"\n"<<nr;
    for (i=1;i<=m;i++)
    {
        if (v[i].in==1)
        {
            fout<<"\n"<<v[i].x<<" "<<v[i].y;
        }
    }
    return 0;
}