Cod sursa(job #1088756)

Utilizator span7aRazvan span7a Data 20 ianuarie 2014 19:47:53
Problema Arbore partial de cost minim Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include<fstream>
#include<stdlib.h>
#include<stdio.h>
#include<algorithm>
using namespace std;
ifstream f("amp.in");
ofstream g("apm.out");
int n,m,k,nr=0,cc[400001];
struct muchii
{
    int e1,e2,cost,conex;
};
muchii v[400001];
bool cmp(muchii a,muchii b)
{
    return a.cost<b.cost;
}
int main()
{   int i,x,y,val,c=0;
    f>>n>>m;
    for(i=1;i<=m;i++)
        f>>v[i].e1>>v[i].e2>>v[i].cost;
      sort(v+1,v+m+1,cmp);
      for(i=1;i<=n;i++)cc[i]=i;
    for(k=1;k<=m;k++)
    {
        x=v[k].e1;
        y=v[k].e2;
        if(cc[x]!=cc[y])
        {
            c+=v[k].cost;nr++;
           // g<<x<<" "<<y<<'\n';
			v[k].conex=1;
            val=cc[y];//v[k].conex=cc[x];
            for(i=1;i<=n;i++)
                if(cc[i]==val)cc[i]=cc[x];
           /* for(i=1;i<=m;i++)
                if(v[i].conex==val)v[i].conex=cc[x];*/

        }
        //else v[k].conex=0;

    }

	g<<c<<'\n';
	g<<nr<<'\n';
    //g<<c<<'\n';
  for(i=1;i<=m;i++)
       {
		   if(v[i].conex)g<<v[i].e1<<" "<<v[i].e2<<'\n';
       }
    return 0;
}