Pagini recente » Cod sursa (job #2946850) | Cod sursa (job #2572720) | Cod sursa (job #1600350) | Cod sursa (job #1992813) | Cod sursa (job #872972)
Cod sursa(job #872972)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
struct graf{int x,y,c;} v[200001];
int poz[400001], t[400001], nrcomp, s, n, m;
bool cmp(graf i,graf j){return i.c<j.c;}
int GetRoot(int x){return t[x]==x?x:(t[x]=GetRoot(t[x]));}
void Unite(int x,int y){t[GetRoot(x)] = GetRoot(y);}
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,cmp);
for (int i=1;i<=n;i++)t[i]=i;
for (int i=1;i<=m;i++)
if (GetRoot(v[i].x)!=GetRoot(v[i].y)){poz[++nrcomp] = i,s += v[i].c;Unite(v[i].x, v[i].y);}
fout<<s<<'\n'<<nrcomp<<'\n';
for (int i=1;i<=nrcomp;i++)
fout<<v[poz[i]].x<<' '<<v[poz[i]].y<<'\n';
return 0;}