Cod sursa(job #640347)

Utilizator R.A.RFMI Romila Remus Arthur R.A.R Data 25 noiembrie 2011 15:16:10
Problema Arbore partial de cost minim Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <algorithm>
#define NMAX 400002

using namespace std;

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

int N,M,K,APM,T[NMAX>>1];
struct muchie{
    int x,y,c;
}V[NMAX];


class cmp
{
    public:
    inline bool operator()(const muchie&a,const muchie&b){return a.c<b.c;}
};
int multime(int x)
{
    if(!T[x])return x;
    return multime(T[x]);
}

int main()
{
    int i,m1,m2;
    in>>N>>M;
    for(i=0;i<M;i++)
        in>>V[i].x>>V[i].y>>V[i].c;
    //sortez muchiile crescator dupa cost

    sort(V,V+M,cmp());
    for(i=0;i<M;i++)
    {
        m1 = multime(V[i].x);
        m2 = multime(V[i].y);
        if(m1!=m2)
        {
            APM+=V[i].c,T[m2]=m1;
            ++K;
            V[i].c = -NMAX;
        }
    }
    out<<APM<<'\n'<<K<<'\n';
    for(i=0;i<M;i++)
        if(V[i].c==-NMAX)
            out<<V[i].x<<' '<<V[i].y<<'\n';
    return 0;
}