Pagini recente » Cod sursa (job #1046197) | Cod sursa (job #2296406) | Cod sursa (job #71083) | Cod sursa (job #2427630) | Cod sursa (job #1982491)
#include <fstream>
#include <algorithm>
#define Max 400100
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
struct muchie {int x,y,c;} M[Max],S[Max];
int n,m,x,y,i,t[Max],sum,cnt;
bool f(muchie a, muchie b)
{
return a.c<b.c;
}
int grupa(int a)
{
if(a==t[a]) return a;
t[a]=grupa(t[a]);
return t[a];
}
void unesc(int a, int b)
{
a=grupa(a);
b=grupa(b);
t[a]=b;
}
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
fin>>M[i].x>>M[i].y>>M[i].c;
for(int i=1;i<=n;i++) t[i]=i;
sort(M+1,M+m+1,f);
for(int i=1;i<=m;i++)
if(grupa(M[i].x)!=grupa(M[i].y))
{
sum+=M[i].c;
unesc(M[i].x,M[i].y);
S[++cnt]=M[i];
}
fout<<sum<<'\n'<<cnt<<'\n';
for(int i=1;i<=cnt;i++)
fout<<S[i].x<<" "<<S[i].y<<"\n";
return 0;
}