Cod sursa(job #950016)

Utilizator Dddarius95Darius-Florentin Neatu Dddarius95 Data 15 mai 2013 18:07:38
Problema Arbore partial de cost minim Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include<algorithm>
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
struct muchii
{
    int a,b,c;
} v[400011];
int t1,t2,n,m,M,i,s,t[200011];
char c[400011];
int tata(int x)
{
   while(t[x] > 0)
   {
    x=t[x];
   }
return x;
}
int cmp(muchii a, muchii b)
{
    return a.c < b.c;
}
int main()
{
    f>>n>>m;
    for(i=1;i<=m;i++)
        f>>v[i].a>>v[i].b>>v[i].c;
    sort(v+1,v+1+m,cmp);
   for(i=1;i<=n;i++)
        t[i]=-1;
   for(i=1;i<=m && M!=n-1;i++)
   {
        t1=tata(v[i].a);
        t2=tata(v[i].b);
        if(t1!=t2)
        {
            s+=v[i].c;
            if( -t[t1] < -t[t2])
            {
                t[t2]+=t[t1];
                t[t1]=t2;
            }
            else
            {
                t[t1]+=t[t2];
                t[t2]=t1;
            }
            c[i]=1;
            M++;
        }
   }
   g<<s<<'\n'<<n-1<<'\n';
   for(i=1;i<=m;i++)
        if(c[i]) g<<v[i].a<<" "<<v[i].b<<'\n';
    f.close();g.close();
   return 0;
}