Pagini recente » Cod sursa (job #2297845) | Cod sursa (job #2990177) | Cod sursa (job #1050983) | Cod sursa (job #1657198) | Cod sursa (job #1003579)
#include<stdio.h>
#include<algorithm>
using namespace std;
typedef struct muchie
{
int x,y,c;
}muchie;
muchie a[400002];
int n,m,t[200002],rez[400002];
inline int cmp(muchie a,muchie b)
{
return a.c<b.c;
}
void update(int x,int y)
{
if(t[x]>t[y])
{
t[y]+=t[x];
t[x]=y;
}
else
{
t[x]+=t[y];
t[y]=x;
}
}
int main()
{
freopen("apm.in","r",stdin);
freopen("apm.out","w",stdout);
int i,x,y,c,s=0,nr=0,ram;
scanf("%d%d",&n,&m);
for(i=1;i<=m;++i)
scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].c);
sort(a+1,a+1+m,cmp);
////////////////////////
for(i=1;i<=n;++i)
t[i]=-1;
ram=n;
for(i=1;i<=m;++i)
{
x=a[i].x;y=a[i].y;c=a[i].c;
if(t[x]>0)
x=t[x];
if(t[y]>0)
y=t[y];
if(x!=y)
{
update(x,y);
s+=c;
rez[++nr]=i;
--ram;
}
if(!ram)
break;
}
printf("%d\n%d\n",s,nr);
for(i=1;i<=nr;++i)
printf("%d %d\n",a[rez[i]].x,a[rez[i]].y);
return 0;
}