Pagini recente » Cod sursa (job #2748701) | Cod sursa (job #267203) | Cod sursa (job #2709309) | Cod sursa (job #1868340) | Cod sursa (job #2940161)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
int n, m, ct, sel, parent[200001], h[200001];
struct Edge {
int x, y, c;
} e[400001];
vector<Edge> v;
bool comp(Edge e1, Edge e2){
return (e1.c < e2.c);
}
int root(int x){
if(parent[x] == 0) return x;
return root(parent[x]);
}
int main() {
fin >> n >> m;
for (int i=1; i<=m; i++) {
fin >> e[i].x >> e[i].y >> e[i].c;
h[e[i].x] = max(h[e[i].x], h[e[i].y] + 1);
}
for(int i=11; i<=n; i++) parent[i] = i;
sort(e+1, e+m+1, comp);
for(int i=1; i<=m and sel<n-1; i++){
int r1 = root(e[i].x);
int r2 = root(e[i].y);
if(r1 != r2){
sel++;
if(h[r1] < h[r2]) parent[r1] = r2;
else parent[r2] = r1;
ct += e[i].c;
v.push_back(e[i]);
}
}
fout<<ct<<'\n'<<v.size()<<'\n';
for(auto e: v) fout<<e.x<<" "<<e.y<<'\n';
return 0;
}