Pagini recente » Cod sursa (job #2737812) | Cod sursa (job #1409042) | Cod sursa (job #2989328) | Cod sursa (job #2728451) | Cod sursa (job #3256123)
#include <bits/stdc++.h>
using namespace std;
const string file="apm";
ifstream fin(file+".in");
ofstream fout(file+".out");
#define endl '\n'
int a[200001];
int get_par(int i)
{
if (i==a[i])return i;
a[i]=get_par(a[i]);
return a[i];
}
void join(int x, int y)
{
x=get_par(x), y=get_par(y);
a[x]=a[y];
}
priority_queue<pair<int, pair<int, int>>,
vector<pair<int, pair<int, int>>>,
greater<pair<int, pair<int, int>>>>pq;
vector<pair<int, int>> v;
int main()
{
int n, m;
fin>>n>>m;
for (int i=1; i<=n; ++i)a[i]=i;
while (m--){
int c, x, y;
fin>>x>>y>>c;
pq.push({c, {x, y}});
}
int c=0;
while (!pq.empty()){
pair<int, int> xy=pq.top().second;
int s=pq.top().first;
pq.pop();
if (get_par(xy.first)!=get_par(xy.second)){
c+=s;
v.push_back(xy);
join(xy.first, xy.second);
}
}
fout<<c<<endl<<v.size()<<endl;
for (auto i:v)fout<<i.second<<" "<<i.first<<"\n";
return 0;
}