Cod sursa(job #2989300)

Utilizator MateiCatalinUrsache Matei MateiCatalin Data 6 martie 2023 12:46:02
Problema Arbore partial de cost minim Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;

ifstream f("apm.in");
ofstream g("apm.out");

struct muchie{
    int a,b,cost;
};

int n,m,tata[200001];
vector <muchie> V,Sol;

bool cmp(muchie m1,muchie m2)
{
    return m1.cost < m2.cost;
}

int find_(int nod)
{
    if(tata[nod]==0)
        return nod;
    tata[nod]=find_(tata[nod]);
    return tata[nod];
}

void union_(int x,int y)
{
    tata[find_(x)]=y;
}

int main()
{
    f>>n>>m;
    for(int i=1;i<=m;i++)
    {
        muchie M;
        f>>M.a>>M.b>>M.cost;
        V.push_back(M);
    }
    sort(V.begin(),V.end(),cmp);
    int nrm=0,sum=0;
    for(auto it:V)
    {
        if(find_(it.a)!=find_(it.b))
        {
            Sol.push_back(it);
            union_(it.a,it.b);
            nrm++;
            sum+=it.cost;
            if(nrm==n-1)
                break;
        }
    }
    g<<sum<<'\n'<<n-1<<'\n';
    for(auto it:Sol)
        g<<it.a<<" "<<it.b<<'\n';
    return 0;
}