Pagini recente » fmi-no-stress-9/solutii | Cod sursa (job #2000041) | Cod sursa (job #1173348) | Cod sursa (job #2880941) | Cod sursa (job #1609299)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
struct mk{
int x, y, c;
};
mk v[400010];
bool test(mk a, mk b){
return a.c<b.c;
}
int n, m, x, y, c, t;
int a[200010], s[200010];
int grupa(int i)
{
if (a[i] == i) return i;
a[i] = grupa(a[i]);
return a[i];
}
void reuniune(int i,int j)
{
a[grupa(i)] = grupa(j);
}
int main(){
fin>>n>>m;
for(int i=1;i<=m;++i){
fin>>v[i].x>>v[i].y>>v[i].c;
}
sort(v+1, v+m+1, test);
for(int i=1;i<=n;++i) a[i]=i;
int k=0;
int p=1;
while(k<n-1){
if(a[v[p].x]!=a[v[p].y]){
++k;
s[k]=p;
t+=v[p].c;
int w1=a[v[p].x];
int w2=a[v[p].y];
reuniune(w1, w2);
}
++p;
}
fout<<t<<'\n';
fout<<n-1<<'\n';
for(int i=1;i<=k;++i){
fout<<v[s[i]].x<<' '<<v[s[i]].y<<'\n';
}
return 0;
}