Pagini recente » Cod sursa (job #2336047) | Cod sursa (job #860635) | Cod sursa (job #2473141) | Cod sursa (job #473528) | Cod sursa (job #2263774)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#define pb push_back
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
int n,m,gr[200001],cost=0;
struct muchie
{
int x,y;
};
struct nod
{
int c;
muchie m;
};
vector <muchie> S;
vector <nod> V;
bool op(nod x,nod y)
{
return x.c<y.c;
}
void citire()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
gr[i]=i;
for(int i=1;i<=m;i++)
{
nod a;
fin>>a.m.x>>a.m.y>>a.c;
V.pb(a);
}
sort(V.begin(),V.end(),op);
}
int grupa(int i)
{
int R,y;
for(R=i;gr[R]!=R;R=gr[R]);
for(;gr[R]!=i;)
{
y=gr[i];
gr[i]=R;
i=y;
}
return R;
}
void reuniune(int i, int j)
{
gr[grupa(i)]=grupa(j);
}
void rez()
{
int mini,maxi;
int i=1;
for(auto&v:V)
{
if(i>n-1)
return;
if(grupa(v.m.x)!=grupa(v.m.y))
{
reuniune(v.m.x,v.m.y);
S.pb(v.m);
cost+=v.c;
i++;
}
}
}
void afish()
{
fout<<cost<<"\n"<<n-1<<"\n";
for(auto&v:S)
fout<<v.x<<" "<<v.y<<"\n";
}
int main()
{
citire();
rez();
afish();
return 0;
}