Pagini recente » Cod sursa (job #134544) | Cod sursa (job #291738) | Cod sursa (job #1001508) | Cod sursa (job #1503729) | Cod sursa (job #2070043)
# include <fstream>
# include <algorithm>
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
struct muchie {
int x, y, c;
}u[200005], sol[200005];
int n, m, k, i, ct, j, nr1, nr2;
int P[200005], T[200005];
bool cmp(muchie x, muchie y )
{
return x.c < y.c;
}
int Root(int x)
{
while(T[x] != x)
x = T[x];
return x;
}
void Unifica(int x, int y)
{
if(P[x] < P[y])
T[x] = y;
if(P[x] > P[y])
T[y] = x;
if(P[x] == P[y]){
T[y] = x;
P[x]++;
}
}
int main()
{
f>>n>>m;
for (i=1; i<=m; ++i) {
f>> u[i].x >>u[i].y >>u[i].c;
T[i] = i;
}
sort(u+1, u+m+1, cmp);
i = 1;
while (k < n-1) {
int rx = Root(u[i].x);
int ry = Root(u[i].y);
if (rx != ry){
++k;
ct += u[i].c;
sol[k] = u[i];
Unifica(rx, ry);
}
++i;
}
g<<ct<<'\n';
for (i=1; i<=k; ++i)
g<<sol[i].y<<" "<<sol[i].x<<'\n';
return 0;
}