Pagini recente » Cod sursa (job #3294408) | Cod sursa (job #1544126) | Cod sursa (job #2440928) | Cod sursa (job #2968138) | Cod sursa (job #380856)
Cod sursa(job #380856)
#include <stdio.h>
long n,m, L[200005],a[200005],b[200005];
struct muchie{ int x,y,c;}; muchie u[400005];
void init()
{ long i;
for(i=1;i<=n;i++)
L[i]=i;
}
void citire()
{
int i,x,y,c;
freopen("apm.in", "r", stdin);
freopen("apm.out", "w", stdout);
scanf("%d %d", &n, &m);
while(scanf("%d %d %d",x, y, c))
{ u[i].x=x;
u[i].y=y;
u[i].c=c;
}
m=i;
}
void sortare()
{ long j,i;
for(i=1;i<m;i++)
for(j=i+1;j<=m;j++)
if(u[i].c>u[j].c)
{
u[0]=u[i];
u[i]=u[j];
u[j]=u[0];
}
}
int main ()
{
long i=1,j,k=0,ct=0,x,y;
citire();
sortare();
init();
while(k<n-1)
{
if(L[u[i].x]!=L[u[i].y])
{
k++;
ct=ct+u[i].c;
a[k]=u[i].x;
b[k]=u[i].y;
x=L[u[i].x];
y=L[u[i].y];
for(j=1;j<=n;j++)
if(L[j]==x)
L[j]=y;
}
i++;
}
printf("%d",ct);
printf("%d",n-1);
for(i=1;i<=n-1;i++)
printf("%d %d", a[i],b[i]);
return 0;
}