Pagini recente » Cod sursa (job #3218112) | Cod sursa (job #557411) | Cod sursa (job #90987) | Cod sursa (job #2414542) | Cod sursa (job #1866938)
#include <bits/stdc++.h>
using namespace std;
ifstream in("apm.in");
ofstream out("apm.out");
struct abc{
int x,y,z;
}a[400004];
bool comp(abc p, abc q){ return p.z < q.z; }
int c[200004];
bool sol[400004];
int n,m,cost;
int grupa(int i)
{
if(c[i]==i)return i;
c[i]=grupa(c[i]);
return c[i];
}
void uneste(int i,int j)
{
c[grupa(i)]=grupa(j);
}
void kruskal()
{
int sel=0;
for(int i=1;i<=n;i++)c[i]=i;
for(int i=1;i<=m && sel<n-1;i++)
if(grupa(a[i].x)!=grupa(a[i].y))
{
sol[i]=true;
cost+=a[i].z;
uneste(a[i].x,a[i].y);
sel++;
}
}
int main()
{
in>>n>>m;
for(int i=1;i<=m;i++)in>>a[i].x>>a[i].y>>a[i].z;
sort(a+1,a+m+1,comp);
kruskal();
out<<cost<<'\n'<<n-1<<'\n';
for(int i=1;i<=m;i++)
if(sol[i])
out<<a[i].x<<' '<<a[i].y<<'\n';
return 0;
}