Pagini recente » Cod sursa (job #8805) | Cod sursa (job #2441868) | Cod sursa (job #1429767) | Cod sursa (job #2054965) | Cod sursa (job #3302083)
#include <bits/stdc++.h>
using namespace std;
struct el
{
int x,y,c;
};
el v[400055];
bool ord(const el & a,const el & b)
{
if(a.c<b.c)
{
return true;
}
else
{
return false;
}
}
int pr[200055];
int p(int k)
{
if(pr[k]!=k)
{
pr[k]=p(pr[k]);
}
return pr[k];
}
int f[400055];
int main()
{
ifstream cin("apm.in");
ofstream cout("apm.out");
int n,m;
cin>>n>>m;
for(int i=1;i<=m;++i)
{
cin>>v[i].x>>v[i].y>>v[i].c;
}
sort(v+1,v+m+1,ord);
for(int i=1;i<=n;++i)
{
pr[i]=i;
}
int sum=0,cnt=0;
for(int i=1;i<=m;++i)
{
int rx = p(v[i].x);
int ry = p(v[i].y);
if (rx != ry)
{
f[i]=1;
sum+=v[i].c;
cnt++;
pr[ry] = rx; // sau invers
}
}
cout<<sum<<"\n"<<cnt<<"\n";
for(int i=1;i<=m;++i)
{
if(f[i]==1)
{
cout<<v[i].x<<" "<<v[i].y<<"\n";
}
}
return 0;
}