Cod sursa(job #2425034)

Utilizator Gandalf29Demeter Csaba Gandalf29 Data 24 mai 2019 09:47:36
Problema Arbore partial de cost minim Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
//#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

ifstream cin("apm.in");
ofstream cout("apm.out");

struct adat
{
    int a,b,c;
};

vector <adat> x;
vector <int> y;
vector <adat> z;

int i,n,m,a,b,c,db=0,s=0,p,q;

int has(adat a,adat b)
{
    if(a.c>b.c) return 0;
    else return 1;
}

int main()
{
    cin>>n>>m;
//    x.resize(m+1);
    y.resize(n+1);
    for(i=0;i<m;++i)
    {
        cin>>a>>b>>c;
        x.push_back({a,b,c});
    }

    sort(x.begin(),x.end(),has);

//    for(auto &e:x)
//        cout<<e.a<<" "<<e.b<<" "<<e.c<<"\n";

    for(i=1;i<=n;++i)
        y[i]=i;

    for(auto &e:x)
    {
        a=e.a;
        b=e.b;
        c=e.c;
        p=y[a];
        q=y[b];
        if(p!=q)
        {
            z.push_back({a,b,0});
            s+=c;
            for(i=1;i<=n;++i)
                if(y[i]==p) y[i]=q;
            db++;
            if(db==n-1) break;
        }
    }

    cout<<s<<"\n";
    cout<<z.size()<<"\n";
    for(auto &e:z)
        cout<<e.a<<" "<<e.b<<"\n";

    return 0;
}