Pagini recente » Cod sursa (job #2608784) | Cod sursa (job #19536) | Cod sursa (job #1550925) | Cod sursa (job #2883277) | Cod sursa (job #1587284)
#include <cstdio>
#include <algorithm>
#define NMax 200005
using namespace std;
int N, M, x[NMax], y[NMax], c[NMax], con[NMax], poz[NMax], v[NMax], i, j, sol, p;
int cc(int i)
{
if(con[i]==i) return i;
con[i]=cc(con[i]);
return con[i];
}
void unire (int i, int j)
{
con[cc(i)]=cc(j);
}
bool compar (int i, int j)
{
return (c[i]<c[j]);
}
int main()
{
freopen("apm.in","r",stdin);
freopen("apm.out","w",stdout);
scanf("%d %d",&N,&M);
for(i=1;i<=M;i++)
{
scanf("%d %d %d",&x[i],&y[i],&c[i]);
poz[i]=i;
}
sort(poz+1,poz+M+1,compar);
for(i=1;i<=N;i++)
con[i]=i;
for(i=1;i<=M;i++)
{
if(cc(x[poz[i]])!=cc(y[poz[i]]))
{
sol+=c[poz[i]];
unire(x[poz[i]],y[poz[i]]);
v[++p]=poz[i];
}
}
printf("%d\n%d\n",sol,p);
for(i=1;i<=p;i++)
printf("%d %d\n",x[v[i]],y[v[i]]);
return 0;
}