Cod sursa(job #2426476)

Utilizator Eszter04Halasz Eszter Eszter04 Data 28 mai 2019 11:16:53
Problema Arbore partial de cost minim Scor 70
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 csp1,csp2,k;
};
vector<adat>x;
vector<long long>v;

vector<pair<long long,long long> > meg;

long long n,m,i,j,k,a,b,c,p,q,sum,db;

int has(adat a,adat b)
{
    return a.k<b.k;
}
int main()
{
    cin>>n>>m;
    x.resize(m+1);
    for(i=1;i<=m;++i)
    {
        cin>>a>>b>>c;
        x[i].csp1=a;
        x[i].csp2=b;
        x[i].k=c;
    }

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

    v.resize(n+1);
    for(i=1;i<=n;++i)
        v[i]=i;

    for(i=1;i<=m;++i)
    {
        a=x[i].csp1;
        b=x[i].csp2;
        k=x[i].k;
        p=v[a];
        q=v[b];
        if(q!=p)
        {
            sum+=k;
            for(j=1;j<=n;++j)
            if(v[j]==q) v[j]=p;
            db++;
            meg.push_back({a,b});
        }
        if(db==n-1) break;
    }
    cout<<sum<<"\n"<<meg.size()<<"\n";
    for(i=0;i<meg.size();++i)
        cout<<meg[i].first<<" "<<meg[i].second<<"\n";
    return 0;
}