Pagini recente » Cod sursa (job #1893298) | Cod sursa (job #1359000) | Cod sursa (job #2138101) | Cod sursa (job #2403935) | Cod sursa (job #2719577)
#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;
}