Pagini recente » Cod sursa (job #1071738) | Cod sursa (job #71614) | Cod sursa (job #2138830) | Cod sursa (job #1091318) | Cod sursa (job #2263261)
#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];
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 cost=0;
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(gr[v.m.x]!=gr[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;
}