Pagini recente » Profil MihaelaCismaru | Cod sursa (job #872830) | Cod sursa (job #1530136) | Cod sursa (job #1909265) | Cod sursa (job #2039158)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fi("apm.in");
ofstream fo("apm.out");
struct muchie
{
int u,v,c;
};
muchie M[400005];
int n,m;
int p[200005];
vector < pair<int,int> > af;
int parinte(int nod)
{
if (p[nod]==nod)
return nod;
return p[nod]=parinte(p[nod]);
}
int unite(int x,int y)
{
p[parinte(x)]=parinte(y);
}
bool cmp(muchie a,muchie b)
{
return a.c<b.c;
}
int main()
{
fi>>n>>m;
for (int i=1; i<=n; i++)
p[i]=i;
for (int i=1; i<=m; i++)
{
fi>>M[i].u>>M[i].v>>M[i].c;
}
sort(M+1,M+m+1,cmp);
int muchiiAdd=0,rez=0;
for (int i=1; i<=m; i++)
{
if (parinte(M[i].u)!=parinte(M[i].v))
{
rez+=M[i].c;
muchiiAdd++;
unite(M[i].u,M[i].v);
af.push_back(make_pair(M[i].u,M[i].v));
}
if (muchiiAdd==n-1)
break;
}
fo<<rez<<"\n"<<n-1<<"\n";
for (auto it: af)
fo<<it.first<<" "<<it.second<<"\n";
return 0;
}