Cod sursa(job #1045929)

Utilizator codrinaapPrisecaru Codrina codrinaap Data 2 decembrie 2013 12:57:25
Problema Arbore partial de cost minim Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");
struct muchie{int x,y,c;};
vector<pair<int,int> >sol;
int n,m,s[100],ct,ms,t[100],h[100];
struct compar{
bool operator()(muchie a,muchie b)
{
    return b.c<a.c;
}
};
priority_queue<muchie,vector<muchie>,compar>CP;
int radacina(int x)
{
    while(t[x]!=0)
    x=t[x];
    return x;
}
int main()
{
    int i,x,y,z,u,v,h1,h2;
    fin>>n>>m;
    muchie e;
    for(i=1;i<=m;i++)
    {
        fin>>e.x>>e.y>>e.c;
        CP.push(e);
    }
    ct=0;
    ms=0;
    while(ms<n-1)
    {
        e=CP.top();
        CP.pop();
        u=radacina(e.x);
        v=radacina(e.y);
     if(u!=v)
      {
          ct=ct+e.c;
          ms++;
          sol.push_back(make_pair(e.x,e.y));
          h1=h[e.x];
          h2=h[e.y];
          if(h1<h2)
            t[u]=v;
          else if(h2<h1)
            t[v]=u;
               else {
               t[u]=v;
               h[v]++;
               }
        }
    }
        fout<<ct<<endl;
        fout<<n-1;
        fout<<endl;
        for(i=0;i<=sol.size();i++)
        fout<<sol[i].first<<' '<<sol[i].second<<endl;
}