Pagini recente » Cod sursa (job #1905970) | Cod sursa (job #171299) | Cod sursa (job #1338619) | Cod sursa (job #1518721) | Cod sursa (job #1563291)
#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;}G[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];//se suprascrie y si apoi compara cu o valoare schimbata, gresit
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<=n;i++)
componente[i]=i;
for(i=1;i<=m;i++)
f>>G[i].x>>G[i].y>>G[i].c;
sort(G+1,G+m+1,comp);
arb[1]=1;
for(i=2;i<=m;i++)
{ if(conex(G[i].x,G[i].y))
arb[++nr]=i;
if(nr==n-1)
break;
}
for(i=1;i<=nr;i++)
s+=G[arb[i]].c;
g<<s<<'\n'<<n-1<<'\n';
for(i=1;i<=nr;i++)
g<<G[arb[i]].x<<' '<<G[arb[i]].y<<'\n';
return 0;
}