Pagini recente » Cod sursa (job #1221437) | Cod sursa (job #3250538) | Cod sursa (job #977685) | Cod sursa (job #86165) | Cod sursa (job #2426892)
#include <iostream>
#include <fstream>
#include <set>
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
const int N = 400001;
set < pair <int, pair< int, int > > > graf;
int n, m, costtotal;
int sef[N];
int find(int x) {
if(sef[x]==x) return x;
sef[x]=find(sef[x]);
return sef[x];
}
int main()
{
f >> n >> m;
int x, y, c;
for(int i = 1; i <= m; i ++) {
f >> x >> y >> c;
graf.insert(make_pair(c, make_pair(x, y)));
}
for(int i = 1; i <= n; i ++)
sef[i] = i;
for(auto i = graf.begin(); i != graf.end();) {
int c1 = i->second.first;
int c2 = i->second.second;
c1 = find(c1);
c2 = find(c2);
if(c1 != c2) {
costtotal += i->first;
sef[c2] = c1;
i ++;
}
else
i = graf.erase(i);
}
g << costtotal << '\n' << graf.size() << '\n';
for(auto i = graf.begin(); i != graf.end(); i ++) {
g << i->second.first << ' ' << i->second.second << '\n';
}
return 0;
}