Pagini recente » Cod sursa (job #515402) | Cod sursa (job #1221607) | Cod sursa (job #479084) | Cod sursa (job #2481911) | Cod sursa (job #2867877)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
const int MAX=4e5+5;
int n,m,viz[MAX],sol[MAX],cost,mc;
struct M
{
int a,b,cost;
}mch[MAX];
bool cmp(M x, M y)
{
return x.cost<y.cost;
}
int main()
{
fin >> n >> m;
for(int i=1;i<=m;i++)
fin >> mch[i].a >> mch[i].b >> mch[i].cost;
sort(mch+1,mch+m+1,cmp);
sol[1]=1;
cost=mch[1].cost;
viz[mch[1].a]=viz[mch[1].b]=1;
for(int i=2;i<n;i++)
{
mc=1;
while(viz[mch[mc].a]==viz[mch[mc].b])
mc++;
sol[i]=mc;
cost+=mch[mc].cost;
viz[mch[mc].a]=viz[mch[mc].b]=1;
}
fout << cost << '\n' << n-1 << '\n';
for(int i=1;i<n;i++)
fout << mch[sol[i]].a << " " << mch[sol[i]].b << '\n';
return 0;
}