Pagini recente » Cod sursa (job #3132174) | Cod sursa (job #1380719) | Cod sursa (job #2150631) | Cod sursa (job #3204537) | Cod sursa (job #833966)
Cod sursa(job #833966)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
struct muchie
{
int x,y,c;
};
muchie V[400001],S[400001];
int T[200001];
bool CMP(muchie a, muchie b)
{
return a.c<b.c;
}
int radacina(int x)
{
if(T[x]==x) return x;
else return T[x]=radacina(T[x]);
}
int main()
{
int n,m,sum=0,k=0;
fin>>n>>m;
for(int i=1;i<=m;i++)
fin>>V[i].x>>V[i].y>>V[i].c;
for(int i=1;i<=n;i++) T[i]=i;
sort(V+1, V+m+1, CMP);
for(int i=1;i<=m;i++)
{
if(radacina(V[i].x)!=radacina(V[i].y) )
{
sum+=V[i].c;
T[radacina(V[i].y)]=radacina(V[i].x);
S[++k]=V[i];
}
}
fout<<sum<<'\n'<<n-1<<'\n';
for(int i=1;i<=k;i++)
fout<<S[i].x<<' '<<S[i].y<<'\n';
fin.close();
fout.close();
return 0;
}