Pagini recente » Cod sursa (job #2225432) | Cod sursa (job #1873012) | Cod sursa (job #2326089) | Cod sursa (job #644442) | Cod sursa (job #2989299)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
struct muchie{
int a,b,cost;
};
int n,m,tata[200001];
vector <muchie> V,Sol;
bool cmp(muchie m1,muchie m2)
{
return m1.cost < m2.cost;
}
int find_(int nod)
{
if(tata[nod]==0)
return nod;
tata[nod]=find_(tata[nod]);
return tata[nod];
}
void union_(int x,int y)
{
tata[find_(x)]=y;
}
int main()
{
f>>n>>m;
for(int i=1;i<=m;i++)
{
muchie M;
f>>M.a>>M.b>>M.cost;
V.push_back(M);
}
sort(V.begin(),V.end(),cmp);
int nrm=0,sum=0;
for(auto it:V)
{
if(find_(it.a)!=find_(it.b))
{
Sol.push_back(it);
union_(it.a,it.b);
nrm++;
sum+=it.cost;
if(nrm==n-1)
break;
}
}
g<<sum<<'\n'<<n-1<<'\n';
for(auto it:Sol)
g<<it.a<<" "<<it.b<<'\n';
return 0;
}