Pagini recente » Cod sursa (job #2212437) | Cod sursa (job #2834543) | Cod sursa (job #444866) | Cod sursa (job #346320) | Cod sursa (job #2003779)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("apm.in");
ofstream cout("apm.out");
int nr, legaturi, t[200005], tine, a, b, total, contor, raspuns[800010];
struct Drum
{
int a, b, c;
}drum[200005];
bool functie(Drum a, Drum b)
{
return a.c < b.c;
}
int rad(int x)
{
if(t[x] == 0)
return x;
else
{
tine = rad(t[x]);
t[x] = tine;
return tine;
}
}
int main()
{
cin >> nr >> legaturi;
for(int i=1; i <= legaturi; i++)
{
cin >> drum[i].a >> drum[i].b >> drum[i].c;
}
sort(drum+1, drum+legaturi+1, functie);
for(int i=1; i <= legaturi; i++)
{
a = rad(drum[i].b);
b = rad(drum[i].a);
if(a != b)
{
contor++;
raspuns[contor] = a;
contor++;
raspuns[contor] = b;
t[a] = b;
total += drum[i].c;
}
}
cout << total << '\n';
cout << contor/2 << '\n';
for(int i=1; i <= contor; i++)
{
cout << raspuns[i];
if(i % 2 == 1)
cout << ' ';
else
cout << '\n';
}
}