Cod sursa(job #2847543)

Utilizator Goia_DariusGoia Darius Goia_Darius Data 10 februarie 2022 21:37:30
Problema Arbore partial de cost minim Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#include <algorithm>

using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
struct muchie{
    int x,y,cost;
}v[400005],sol[400005];
int T[200005];
int n,m,contor,Suma,nr1,nr2;
int multimi(int x)
{
    if(T[x]!=x)
        T[x]=multimi(T[x]);
    return T[x];
}
int compare(muchie a,muchie b){
    return a.cost<b.cost;
}
int main()
{
    f>>n>>m;
    for(int i=1;i<=m;i++)
        f>>v[i].x>>v[i].y>>v[i].cost;
    sort(v+1,v+m+1,compare);
    for(int i=1;i<=n;++i)
        T[i]=i;
    for(int i=1;i<=m;i++)
    {
        nr1=multimi(v[i].x);
        nr2=multimi(v[i].y);
        if(nr1!=nr2){
            T[nr1]=nr2;
            Suma+=v[i].cost;
            sol[++contor]=v[i];
        }
    }
    g<<Suma<<'\n'<<contor<<'\n';
    for(int i=1;i<=contor;i++)
        g<<sol[i].x<<" "<<sol[i].y<<'\n';
    return 0;
}