Cod sursa(job #1391952)

Utilizator andytosaAndrei Tosa andytosa Data 18 martie 2015 12:05:22
Problema Arbore partial de cost minim Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <queue>
#include <algorithm>
#define x first
#define y second
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
struct cel{int a,b,c;} v[400010];
queue< pair<int,int> > muchie;
pair<int,int> jeg;
int n,m,frec[200010],i;
long long sum;
bool cmp(cel x,cel y)
{
    return x.c<y.c;
}
int main()
{
    fin>>n>>m;
    for(i=1;i<=n;++i)
        frec[i]=i;
    for(i=1;i<=m;++i)
        fin>>v[i].a>>v[i].b>>v[i].c;
    sort(v+1,v+1+m,cmp);
    for(i=1;i<=m;++i)
        if(frec[v[i].a] != frec[v[i].b]){
            frec[v[i].a] = frec[v[i].b];
            jeg=make_pair(v[i].a,v[i].b);
            muchie.push(jeg);
            sum += v[i].c;
        }
    fout<<sum<<'\n';
    while(!muchie.empty()){
        jeg=muchie.front();
        fout<<jeg.x<<" "<<jeg.y<<'\n';
        muchie.pop();
    }
    return 0;
}