Pagini recente » Cod sursa (job #932482) | Cod sursa (job #500220) | Cod sursa (job #2083904) | Cod sursa (job #932368) | Cod sursa (job #2045471)
#include <bits/stdc++.h>
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
const int N = 200010;
vector<int> v[N];
vector<pair<int,int>> sol;
vector<tuple<int,int,int>> e;
int n,m,x,y,c,cost,t[N],rx,ry,i,get_root(int);
queue<int> q;
int main()
{
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y>>c;
e.push_back(make_tuple(c,x,y));
}
sort(e.begin(),e.end());
for(i=1;i<=n;i++)
t[i]=i;
for(auto it:e)
{
tie(c,x,y)=it;
rx=get_root(x);
ry=get_root(y);
if(rx==ry)
continue;
sol.push_back(make_pair(x,y));
cost+=c;
t[rx]=ry;
if(int(sol.size())==n-1)
break;
}
g<<cost<<'\n'<<n-1<<'\n';
for(auto it:sol)
g<<it.first<<' '<<it.second<<'\n';
return 0;
}
int get_root(int nod)
{
if(t[nod]==nod)
return nod;
t[nod]=get_root(t[nod]);
return t[nod];
}