Cod sursa(job #1711659)

Utilizator vancea.catalincatalin vancea.catalin Data 31 mai 2016 21:13:20
Problema Arbore partial de cost minim Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<algorithm>
#include<iostream>
#include<fstream>
#include<vector>
#define DX 200005
using namespace std;
fstream fin("apm.in",ios::in),fout("apm.out",ios::out);
vector<pair<int,pair<int,int> > > v;
vector<pair<int,int> > r;
int p[DX],n,m;
int tatic(int nod)
{
    if(p[nod]==nod) return nod;
    return (p[nod]=tatic(p[nod]));
}
int main()
{
    int a,b,c,d,e,i,j,total=0;
    fin>>n>>m;
    for(i=1;i<=m;i++)
    {
        fin>>a>>b>>c;
        v.push_back(make_pair(c,make_pair(a,b)));
    }
    for(i=1;i<=n;i++) p[i]=i;
    sort(v.begin(),v.end());
    for(i=0;i<m;i++)
    {
        a=v[i].second.first;
        b=v[i].second.second;
        c=v[i].first;
        d=tatic(a);
        e=tatic(b);
        if(d!=e)
        {
            total+=c;
            p[d]=e;
            r.push_back(make_pair(a,b));
        }
    }
    fout<<total<<"\n";
    fout<<r.size()<<"\n";
    for(i=0;i<r.size();i++) fout<<r[i].first<<" "<<r[i].second<<"\n";

}