Cod sursa(job #3162760)

Utilizator ionut3007Malita Ionut ionut3007 Data 29 octombrie 2023 20:02:13
Problema Arbore partial de cost minim Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
#include <fstream>

using namespace std;

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

const int nmax=200001;

struct muchie{
    int x,y,c;
}v[2010],z[2010];

int t[nmax];

bool comp(muchie &a,muchie &b){
    return a.c<b.c;
}

int main()
{
    int n,m;
    fin>>n>>m;
    for(int i=0;i<m;i++){
        fin>>v[i].x>>v[i].y>>v[i].c;
    }

    sort(v,v+m,comp);

    for(int i=1;i<=n;i++)
        t[i]=i;

    int total=0,k=0;
    for(int i=0;i<m;i++)
    if(t[v[i].x]!=t[v[i].y]){
        z[++k].x=v[i].x,z[k].y=v[i].y;
        total+=v[i].c;
        int ai=t[v[i].x],aj=t[v[i].y];
        for(int j=1;j<=n;j++)
            if(t[j]==aj)
            t[j]=ai;
    }

    fout<<total;
    fout<< '\n'<<k<< '\n';
    for(int i=1;i<=k;i++)
        fout<<z[i].x<< " "<<z[i].y<< '\n';

    return 0;
}