Pagini recente » Cod sursa (job #2419199) | Cod sursa (job #317128) | Cod sursa (job #1156030) | Cod sursa (job #1756734) | Cod sursa (job #1583734)
#include <fstream>
#include <algorithm>
#define Nmax 200001
#define Mmax 400001
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
int n,m,x,y,c,arb[Nmax],componente[Nmax],nr=1,s;
struct muchie
{
int x,y,c;
} M[Mmax];
bool comp(muchie x,muchie y)
{
if(x.c<y.c)
return true;
return false;
}
int conex(int x,int y)
{
if(componente[x]==componente[y])
return 0;
int aux=componente[y];
for(int i=1; i<=n; i++)
{
if(componente[i]==aux)
componente[i]=componente[x];
}
return 1;
}
int main()
{
int i;
f>>n>>m;
for(i=1; i<=Nmax-1; i++)
componente[i]=i;
for(i=1; i<=m; i++)
f>>M[i].x>>M[i].y>>M[i].c;
sort(M+1,M+m+1,comp);
arb[1]=1;
componente[M[1].x]=1;
componente[M[1].y]=1;
for(i=2; i<=m; i++)
{
if(conex(M[i].x,M[i].y))
arb[++nr]=i;
if(nr==n-1)
break;
}
for(i=1; i<=nr; i++)
s+=M[arb[i]].c;
g<<s<<'\n'<<n-1<<'\n';
for(i=1; i<=nr; i++)
g<<M[arb[i]].x<<' '<<M[arb[i]].y<<'\n';
return 0;
}