Pagini recente » Cod sursa (job #2357648) | Cod sursa (job #2140184) | Rating kayn main (nokaynnopain) | Cod sursa (job #457913) | Cod sursa (job #2110746)
#include <fstream>
#include <algorithm>
#define mmax 400001
#define nmax 200001
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
struct muchie{int in, fn, cost;};
muchie lista[mmax];
int ctmin, n,m;
int cc[nmax];
int nrm;//nr muchii selectate
muchie sol[nmax];//lista muchiilor selectate
bool comp(muchie a, muchie b)
{
return a.cost<b.cost;
}
void citire();
void parcurgere();
void afisare();
int main()
{
citire();
parcurgere();
afisare();
return 0;
}
void citire()
{
fin>>n>>m;
for (int i=1; i<=m; i++)
fin>>lista[i].in>>lista[i].fn>>lista[i].cost;
}
void parcurgere()
{
int i,j,k=1,x;
muchie cr;
sort(lista+1, lista+m+1, comp);
for (i=1; i<=n; i++)
cc[i]=i;
while (nrm<n-1)
{
cr=lista[k];
k++;
if (cc[cr.in]!=cc[cr.fn])
{
ctmin+=cr.cost;
nrm++;
sol[nrm]=cr;
x=cc[cr.in];
for (i=1; i<=n; i++)
if (cc[i]==x)
cc[i]=cc[cr.fn];
}
}
}
void afisare()
{
fout<<ctmin<<'\n'<<nrm<<'\n';
for (int i=1; i<=nrm; i++)
fout<<sol[i].in<<' '<<sol[i].fn<<'\n';
}