Pagini recente » Cod sursa (job #2128672) | Cod sursa (job #1743685) | Cod sursa (job #2785073) | Rating Dina Andrei (DinaAndrei) | Cod sursa (job #624335)
Cod sursa(job #624335)
#include <iostream>
#include <stdio.h>
#include <algorithm>
#define N 200010
#define NN 400010
using namespace std;
int n,m,op,s;
int t[N], x[N],y[N],c[N],nr[NN];
struct rez{
int x,y;
}a[NN];
int lg;
int f(int x)
{
if(t[x]==x)
return t[x];
return t[x]=f(t[x]);
}
bool comp(int i, int j)
{
return (c[i] < c[j]);
}
void citire()
{
freopen("apm.in","r",stdin);
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
t[i]=i;
for(int i=1;i<=m;i++)
{
scanf("%d %d %d",&x[i],&y[i],&c[i]);
nr[i]=i;
}
sort(nr+1,nr+1+m,comp);
for(int i=1;i<=m;i++)
{
if( f(x[nr[i]]) != f(y[nr[i]]) )
{
s+=c[nr[i]];
a[++lg].x = x[nr[i]];
a[lg].y = y[nr[i]];
t[f(x[nr[i]])] = f(y[nr[i]]);
}
}
printf("%d\n%d\n",s,lg);
for(int i=1;i<=lg;i++)
printf("%d %d\n",a[i].y,a[i].x);
}
int main()
{
freopen("apm.out","w",stdout);
citire();
return 0;
}