Cod sursa(job #2719577)

Utilizator doruliqueDoru MODRISAN dorulique Data 9 martie 2021 23:19:32
Problema Arbore partial de cost minim Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>
#include <set>
#include <vector>
#define nmx 200001
#define mmx 400001
using namespace std;

int t[nmx],n,m,costt=0;
set <pair<int,pair<int,int> > >s;
vector <pair<int,int> > sol;

int main()
{
    ifstream fin("apm.in");
    fin>>n>>m;
    int i,x,y,cost,alese=0,tx,ty;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y>>cost;
        s.insert(make_pair(cost,make_pair(x,y)));
    }
    while(!s.empty())
    {
        x=s.begin()->second.first;
        y=s.begin()->second.second;
        cost=s.begin()->first;
        s.erase(s.begin());
        tx=x;while(t[tx])tx=t[tx];
        ty=y;while(t[ty])ty=t[ty];
        if(tx!=ty)
        {
            alese++;
            costt+=cost;
            sol.push_back(make_pair(x,y));
            t[ty]=tx;
            ///compression
            if(alese==n-1)break;
        }
    }
    ofstream fout("apm.out");
    fout<<costt<<"\n"<<n-1<<"\n";
    for(auto &a:sol)
        fout<<a.first<<" "<<a.second<<"\n";
    return 0;
}