Pagini recente » Cod sursa (job #1383719) | Cod sursa (job #3285603) | Cod sursa (job #2784413) | Cod sursa (job #2789836) | Cod sursa (job #1130908)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
int c[15001][15001];
bool viz[15001];
int tata[15001];
int n,m;
long 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]=5000;
for(i=1;i<=m;i++)
{
f>>x>>y>>cost;
c[x][y]=cost;
c[y][x]=cost;
}
}
void prim(void)
{
int minn;
int cop,tat;
costtot=0;
viz[1]=1;
for(int k=1;k<=n-1;k++)
{
minn=2000;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if((viz[i]==1) && (viz[j]==0) && (minn>c[i][j]))
{
minn=c[i][j];
tat=i;
cop=j;
}
}
}
viz[cop]=1;
tata[cop]=tat;
costtot=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;
}