Cod sursa(job #1325843)

Utilizator ade_tomiEnache Adelina ade_tomi Data 24 ianuarie 2015 13:56:49
Problema Arbore partial de cost minim Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
int rad[200005],n,m,sol[200005],i,cost,nr;
struct str
{
  int x,y,c;
};
str v[400005];
bool sortare(str a , str b)
{
  return a.c<b.c;
}
int radacina(int nod)
{
  if(rad[nod]==nod)
    return nod;
  else
  {
    rad[nod]=radacina(rad[nod]);
    return rad[nod];
  }
}
int main()
{
  freopen("apm.in","r",stdin);
  freopen("apm.out","w",stdout);
  scanf("%d%d",&n,&m);
  for(i=1;i<=m;i++)
    scanf("%d%d%d",&v[i].x,&v[i].y,&v[i].c);
  sort(v+1,v+1+m,sortare);
//  for(i=1;i<=m;i++)
   // printf("%d %d %d\n",v[i].x,v[i].y,v[i].c);
  for(i=1;i<=n;i++)
    rad[i]=i;
  for(i=1;i<=m;i++)
  {
    if(radacina(v[i].x)!=radacina(v[i].y))
    {
      rad[radacina(v[i].x)]=radacina(v[i].y);
      cost+=v[i].c;
      nr++;
      sol[nr]=i;
     // printf("%d %d\n",v[i].x,v[i].y);
    }


  //  return 0;
  }
  printf("%d\n%d\n",cost,n-1);
  for(i=1;i<=nr;i++)
      printf("%d %d\n",v[i].x,v[i].y);
  return 0;
}