Pagini recente » Cod sursa (job #1792630) | Cod sursa (job #1425661) | Cod sursa (job #2727584) | Cod sursa (job #1729177) | Cod sursa (job #2857380)
#include <fstream>
using namespace std;
ifstream cin("apm.in");
ofstream cout("apm.out");
int n,m,tata[200001];
struct ura{
int x,y,cost;
bool vf;
}mu[400001],aux;
int sef(int x){
if(x==tata[x])
return x;
else
return tata[x]=sef(tata[x]);
}
void unire(int x,int y){
x=sef(x);
y=sef(y);
tata[y]=x;
}
int main()
{
int i,j,l=0,pret=0;
cin>>n>>m;
for(i=1;i<=n;i++)
tata[i]=i;
for(i=1;i<=m;i++)
cin>>mu[i].x>>mu[i].y>>mu[i].cost;
for(i=1;i<m;i++)
for(j=i+1;j<=m;j++)
if(mu[j].cost<mu[i].cost){
aux=mu[j];
mu[j]=mu[i];
mu[i]=aux;
}
i=1;
while(l<n){
if(sef(mu[i].x)!=sef(mu[i].y)){
mu[i].vf=1;
unire(mu[i].x,mu[i].y);
l++;
pret=pret+mu[i].cost;
}
i++;
}
cout<<pret<<'\n'<<n-1<<'\n';
for(i=1;i<=m;i++)
if(mu[i].vf==1)
cout<<mu[i].x<<' '<<mu[i].y<<'\n';
return 0;
}