Pagini recente » Cod sursa (job #2612654) | Cod sursa (job #1714873) | Cod sursa (job #702347) | Cod sursa (job #1253188) | Cod sursa (job #2713065)
#include <bits/stdc++.h>
#define NMAX 200005
using namespace std;
ifstream in("apm.in");
ofstream out("apm.out");
int n,m,cost;
int v[NMAX];
vector < pair< int , pair < int,int > > > M;
vector < pair < int,int > > sol;
int tata(int a)
{
if(v[a]==a)
return a;
tata(v[a]);
}
void cit()
{
in>>n>>m;
while(m--)
{
int x,y,c;
in>>x>>y>>c;
M.push_back({c,{x,y}});
}
}
void prg()
{
for(int i=1;i<=n;i++)
v[i]=i;
sort(M.begin(),M.end());
for(size_t i=0;i<M.size();i++)
{
int x=M[i].second.first;
int y=M[i].second.second;
v[x]=tata(x);
v[y]=tata(y);
if(v[x]!=v[y])
{
cost+=M[i].first;
v[v[y]]=v[x];
sol.push_back({x,y});
}
}
}
void afis()
{
out<<cost<<'\n';
out<<n-1<<'\n';
for(size_t i=0;i<sol.size();i++)
out<<sol[i].first<<' '<<sol[i].second<<'\n';
}
int main()
{
cit();
prg();
afis();
return 0;
}