Pagini recente » Cod sursa (job #2380984) | Cod sursa (job #1375730) | Cod sursa (job #953342) | Cod sursa (job #1767006) | Cod sursa (job #2857392)
#include <fstream>
#include <algorithm>
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;
}
bool comp(ura a,ura b){
return a.cost<b.cost;
}
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;
sort(mu+1,mu+m+1,comp);
i=1;
while(l<n&&i<=m){
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;
}