Pagini recente » Cod sursa (job #171358) | Cod sursa (job #846835) | Cod sursa (job #1585343) | Cod sursa (job #2071932) | Cod sursa (job #2174838)
#include <iostream>
#include <fstream>
#include <limits.h>
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
int n,m,c[20005][20005],viz[200005],cost_arbore,pred[200005];
void citire_graf()
{
f>>n>>m;
int x,y,val;
for(int i=1;i<=m;++i)
{
f>>x>>y>>val;
c[x][y]=c[y][x]=val;
}
}
void arbore_partial_de_cost_minim()
{
viz[1]=1;
int nod1,nod2;
for(int i=1;i<=n-1;++i)
{
int minim=INT_MAX;
for(int j=1;j<=n;j++)
{
for(int k=1;k<=n;k++)
{
if(viz[j]==1 && viz[k]==0 && c[j][k]!=0 && c[j][k]<minim)
{
minim=c[j][k];
nod1=j;
nod2=k;
}
}
}
viz[nod2]=1;
pred[nod2]=nod1;
cost_arbore+=minim;
}
}
void afisare()
{
g<<cost_arbore<<'\n';
g<<n-1<<'\n';
for(int i=2;i<=n;++i)
g<<pred[i]<<' '<<i<<'\n';
}
int main()
{
citire_graf();
arbore_partial_de_cost_minim();
afisare();
return 0;
}