Cod sursa(job #892936)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 26 februarie 2013 12:20:57
Problema Arbore partial de cost minim Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
struct muchie {int x,y,c;} U[400013];
int n,m,arb[400013],cost;
inline int cmp( muchie a, muchie b)
{
    if (a.c<b.c)
        return 1;
    return 0;
}
int main()
{
    int i,j,nrm=0,temp;
    fstream f,g;
    f.open("apm.in",ios::in);
    g.open("apm.out",ios::out);
    f>>n>>m;
    for (i=1;i<=m;i++)
        f>>U[i].x>>U[i].y>>U[i].c;
    sort (U+1,U+m+1,cmp);
    nrm=0;
    g<<"       \n"<<n-1<<"\n";
    for (i=1;i<=m;i++)
        arb[i]=i;
    i=1;
    while (nrm<n-1)
    {
        if (arb[U[i].x]!=arb[U[i].y])
        {
            cost+=U[i].c;
            g<<U[i].x<<" "<<U[i].y<<"\n";
            nrm++;
            temp=arb[U[i].y];
            for (j=1;j<=n;j++)
                if (arb[j]==temp)
                    arb[j]=arb[U[i].x];
        }
        i++;
    }
    g.clear();
    g.seekg(0,ios::beg);
    g<<cost;
}