Pagini recente » Cod sursa (job #3239498) | Cod sursa (job #338829) | Cod sursa (job #620521) | Cod sursa (job #1781723) | Cod sursa (job #380011)
Cod sursa(job #380011)
#include <cstdio>
#include <algorithm>
using namespace std;
struct muchie
{
int i, j, cost;
friend bool operator < (const muchie &a, const muchie &b)
{
return a.cost < b.cost;
}
};
muchie v[400005];
int n, m, t[200005], a[200005];
int radacina(int x)
{
while (t[x])
x = t[x];
return x;
}
int main()
{
FILE *f = fopen("apm.in", "r");
fscanf(f, "%d%d", &n, &m);
for (int i = 1; i <= m; ++i)
fscanf(f, "%d%d%d", &v[i].i, &v[i].j, &v[i].cost);
fclose(f);
sort(v+1, v+m+1);
int na = 0, cost = 0;
for (int i = 1; i <= m; ++i)
{
int ri = radacina(v[i].i), rj = radacina(v[i].j);
if (ri != rj)
t[ri] = rj, a[++na] = i, cost += v[i].cost;
}
f = fopen("apm.out", "w");
fprintf (f, "%d\n%d\n", cost, n-1);
for (int i = 1; i <= n - 1; ++i)
fprintf(f, "%d %d\n", v[ a[i] ].i, v[ a[i] ].j);
fclose(f);
return 0;
}