Cod sursa(job #1106397)

Utilizator ShaDoWsiD100Rzv Rzv ShaDoWsiD100 Data 12 februarie 2014 19:44:24
Problema Arbore partial de cost minim Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include<algorithm>

using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
struct muchie{
    int x,y,c,viz;
}v[400001];
int t[100001],r1,r2,i,n,x,y,k,m,ct;
int cmp(muchie a, muchie b){
   if(a.c<b.c)
      return 1;
  return 0;
}
int main()
{
    f>>n>>m;
    for(i=1;i<=m;i++)
       f>>v[i].x>>v[i].y>>v[i].c;
   sort(v+1,v+m+1,cmp);
   for(i=1;i<=n;i++)
        t[i]=-1;
   k=0;i=1;
   while(k<n-1){
       x=v[i].x;y=v[i].y;
       r1=x;
       while(t[r1]>0)
        r1=t[r1];
       r2=y;
      while(t[r2]>0)
        r2=t[r2];
      if(r1!=r2){
            v[i].viz=1;
         ct=ct+v[i].c;
         k++;
      if(t[r1]<t[r2]){
        t[r1]+=t[r2];
        t[r2]=r1;
      }
      else
      {
        t[r2]+=t[r1];
        t[r1]=r2;

      }
      }
    i++;
   }
   g<<ct<<'\n'<<k<<'\n';
   for(i=1;i<=m;i++)
        if(v[i].viz==1)
         g<<v[i].x<<" "<<v[i].y<<'\n';

    return 0;
}