Pagini recente » Cod sursa (job #3217869) | Cod sursa (job #41551) | Cod sursa (job #144670) | Istoria paginii planificare/sedinta-20090126 | Cod sursa (job #1130589)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
short int c[30001][30001];
bool viz[30001];
int tata[30001];
int n,m;
int costtot;
void citire(void)
{
int i,j;
int x,y,cost;
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
c[i][j]=2000;
for(i=1;i<=m;i++)
{
f>>x>>y>>cost;
c[x][y]=cost;
c[y][x]=cost;
}
}
void prim(void)
{
int min;
int cop,tat;
viz[1]=1;
for(int k=1;k<=n-1;k++)
{
min=2000;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
if((viz[i]==1) && (viz[j]==0) && (min>c[i][j]))
{
min=c[i][j];
tat=i;
cop=j;
}
}
viz[cop]=1;
tata[cop]=tat;
costtot+=c[cop][tat];
}
}
int main()
{
citire();
prim();
g<<costtot<<"\n";
g<<n-1<<"\n";
for(int i=1;i<=n;i++)
if(tata[i]!=0)
g<<i<<" "<<tata[i]<<"\n";
return 0;
}