Pagini recente » Cod sursa (job #821060) | Cod sursa (job #2544631) | Cod sursa (job #2667384) | Cod sursa (job #1987895) | Cod sursa (job #2263256)
#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;
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])
{
if(v.m.x>v.m.y)
{
maxi=v.m.x;
mini=v.m.y;
}
else
{
maxi=v.m.y;
mini=v.m.x;
}
int t=gr[maxi];
for(int i=1; i<=n; i++)
if(gr[i]==t)
gr[i]=gr[mini];
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;
}