Cod sursa(job #2861584)

Utilizator vladIordaIordachescu Vlad vladIorda Data 4 martie 2022 09:40:14
Problema Arbore partial de cost minim Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

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

int n,m;

struct muchie
{
    int x,y,c;
};

bool ordine(muchie id1,muchie id2)
{
    if (id1.c!=id2.c)
        return id1.c<id2.c;
    if (id1.x!=id2.x)
        return id1.x<id2.x;
    return id1.y<id2.y;
}

int main()
{
    fin>>n>>m;
    int v[n+1],sol[n],cost=0;
    muchie U[m+1];
    for (int i=1;i<=m;i++)
        fin>>U[i].x>>U[i].y>>U[i].c;
    sort(U+1,U+m+1,ordine);
    for (int i=1;i<=n;i++)
        v[i]=i;
    int delta=1;
    for (int i=1;i<=m && delta<=n;i++)
    {
        int n1=U[i].x,n2=U[i].y;
        if (v[n1]!=v[n2])
        {
            sol[delta]=i;
            cost+=U[i].c;
            int val1=v[n1],val2=v[n2];
            for (int j=1;j<=n;j++)
                if (v[j]==val2)
                v[j]=val1;
            delta++;
        }
    }
    fout<<cost<<'\n'<<n-1<<'\n';
    for (int i=1;i<=n-1;i++)
        fout<<U[i].x<<" "<<U[i].y<<'\n';
    return 0;
}