Pagini recente » Cod sursa (job #54820) | Cod sursa (job #484101) | Cod sursa (job #2306787) | Cod sursa (job #271735) | Cod sursa (job #2116142)
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
struct hey{int x,y,c;}v[400001];
int w[200001],fin[200001],s;
bool cmp(hey a, hey b)
{
if(a.c<b.c)
return true;
return false;
}
int boss(int a)
{
if(w[a]==a)
return a;
return w[a]=boss(w[a]);
}
void calculam(int x, int y, int b)
{
if(boss(x)!=boss(y))
{
w[boss(x)]=boss(y);
if(fin[x]==0)
fin[x]=y;
else
fin[y]=x;
s=s+b;
}
}
int main ()
{
int N,M,X,Y,C,i;
f>>N>>M;
for(i=1;i<=M;i++)
f>>v[i].x>>v[i].y>>v[i].c;
sort(v+1,v+M+1,cmp);
for(i=1;i<=N;i++)
w[i]=i;
for(i=1;i<=M;i++)
{
calculam(v[i].x,v[i].y,v[i].c);
}
g<<s<<'\n';
s=0;
for(i=1;i<=N;i++)
{
if(fin[i]!=0)
s++;
}
g<<s<<'\n';
for(i=1;i<=N;i++)
{
if(fin[i]!=0)
g<<i<<" "<<fin[i]<<" "<<'\n';
}
return 0;
}