Cod sursa(job #2867877)

Utilizator cdenisCovei Denis cdenis Data 10 martie 2022 16:45:45
Problema Arbore partial de cost minim Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

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

const int MAX=4e5+5;
int n,m,viz[MAX],sol[MAX],cost,mc;
struct M
{
    int a,b,cost;
}mch[MAX];

bool cmp(M x, M y)
{
    return x.cost<y.cost;
}

int main()
{
    fin >> n >> m;
    for(int i=1;i<=m;i++)
        fin >> mch[i].a >> mch[i].b >> mch[i].cost;
    sort(mch+1,mch+m+1,cmp);
    sol[1]=1;
    cost=mch[1].cost;
    viz[mch[1].a]=viz[mch[1].b]=1;
    for(int i=2;i<n;i++)
    {
        mc=1;
        while(viz[mch[mc].a]==viz[mch[mc].b])
            mc++;
        sol[i]=mc;
        cost+=mch[mc].cost;
        viz[mch[mc].a]=viz[mch[mc].b]=1;
    }
    fout << cost << '\n' << n-1 << '\n';
    for(int i=1;i<n;i++)
        fout << mch[sol[i]].a << " " << mch[sol[i]].b << '\n';
    return 0;
}