Pagini recente » Cod sursa (job #670615) | Cod sursa (job #95327) | Cod sursa (job #499162) | Cod sursa (job #236511) | Cod sursa (job #1572750)
#include <fstream>
#include <algorithm>
using namespace std;
int nr,mx[400001],my[400001],t[100001],j,h[100001],n,u,i,ax,ay,C,r[400001],s;
struct muchie
{
int x,y,c;
}m[400001];
bool sortare(muchie a,muchie b)
{
return a.c<b.c;
}
int arb(int n)
{
while (t[n])
n=t[n];
return n;
}
int main()
{
ifstream fin ("apm.in");
ofstream fout ("apm.out");
fin>>n>>u;
for (i=1;i<=u;i++)
{
nr++;
fin>>m[nr].x>>m[nr].y>>m[nr].c;
}
sort(m+1,m+nr+1,sortare);
j=0;
//for (i=1;i<=n;i++) t[i]=i;
for (i=1;i<n;i++)
{
ax=0; ay=0;
while (ax==ay)
{
ax=arb(m[++j].x);
ay=arb(m[j].y);
}
C+=m[j].c;
r[++s]=j;
if (h[ax]>h[ay]) t[ay]=ax;
else if (h[ay]>h[ax]) t[ax]=ay;
else
{
t[ax]=ay;
h[ay]++;
}
}
fout<<C<<'\n'<<s<<'\n';
for (i=1;i<=s;i++) fout<<m[r[i]].x<<" "<<m[r[i]].y<<'\n';
fin.close();
fout.close();
return 0;
}