Cod sursa(job #2352391)

Utilizator mitza23Mihai Grebla mitza23 Data 23 februarie 2019 11:58:23
Problema Arbore partial de cost minim Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream fi("apm.in");
ofstream fo("apm.out");

struct muchie { int v1,v2,cost;};

int n,m;
muchie E[1001];

int C[101];
int REZ[1001];

int cmp(muchie a, muchie b)
{
    return a.cost<b.cost;
}


int main()
{
    fi>>n>>m;
    for(int i=1;i<=m;i++)
        fi>>E[i].v1>>E[i].v2>>E[i].cost;
    sort(E,E+m+1,cmp);
    for (int i=1;i<=n;i++)
        C[i]=i;
    int s=0;
    int nr=0;
    for(int i=1;i<=m;i++)
        if(C[E[i].v1]!=C[E[i].v2])
        {
            nr++;
            REZ[nr]=i;
            s=s+E[i].cost;
            /// unificare de arbori
            int a,b;
            a=C[E[i].v1];
            b=C[E[i].v2];
            for (int j=1;j<=n;j++)
                if (C[j]==b)
                    C[j]=a;
        }
    fo<<s<<endl;
    for(int i=1;i<=nr;i++)
        fo<<E[REZ[i]].v1<<" "<<E[REZ[i]].v2<<endl;
    fi.close();
    fo.close();
    return 0;
}