Pagini recente » Cod sursa (job #1146535) | Cod sursa (job #104622) | Cod sursa (job #810723) | Cod sursa (job #80670) | Cod sursa (job #1690620)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
#define MAX 200100
struct sebi{
int x, y, c;
} e[2 * MAX];
int dad[MAX];
inline bool cmp(sebi a, sebi b)
{
return a.c < b.c;
}
int tata(int n)
{
if(dad[n] != n)
dad[n] = tata(dad[n]);
return dad[n];
}
int ans[MAX], dr;
int main()
{
int s = 0, n, m, i;
fin >> n >> m;
for(i = 1 ; i <= n ; i++)
{
dad[i] = i;
}
for(i = 1 ; i <= m ; i++)
{
fin >> e[i].x >> e[i].y >> e[i].c;
}
sort(e + 1, e + m + 1, cmp);
for(i = 1 ; i <= m ; i++)
{
if(tata(e[i].x) != tata(e[i].y))
{
s += e[i].c;
ans[++dr] = i;
dad[tata(e[i].x)] = tata(e[i].y);
}
}
fout << s << "\n";
fout << dr << "\n";
for(i = 1 ; i <= dr ; i++)
{
fout << e[i].x << " " << e[i].y << "\n";
}
}