标签:
Description
Input
Output
Sample Input
1 0 2 3 1 2 37 2 1 17 1 2 68 3 7 1 2 19 2 3 11 3 1 7 1 3 5 2 3 89 3 1 91 1 2 32 5 7 1 2 5 2 3 7 2 4 8 4 5 11 3 5 10 1 5 6 4 2 12 0
Sample Output
0 17 16 26
prime基本算法
#include<stdio.h>
#include<string.h>
int e[100][100];
int n;
int inf=99999;
void init();
int prime();
int main()
{
int m,i,j,v,u,w;
while(scanf("%d",&n)&&n)
{
scanf("%d",&m);
init();
for(i=1;i<=m;i++)
{
scanf("%d %d %d",&v,&u,&w);
if(e[v][u]>w)
{
e[v][u]=w;
e[u][v]=w;
}
}
printf("%d\n",prime());
}
return 0;
}
int prime()
{
int sum=0;
int book[100]={0};
int dis[100]={0},i,min,minx,j;
for(i=1;i<=n;i++)
dis[i]=e[1][i];
book[1]=1;
for(j=1;j<n;j++)
{
min=inf;
for(i=1;i<=n;i++)
{
if(min>dis[i]&&book[i]==0)
{
min=dis[i];
minx=i;
}
}
book[minx]=1;
sum+=min;
for(i=1;i<=n;i++)
{
if(book[i]==0&&dis[i]>e[minx][i])
dis[i]=e[minx][i];
}
}
return sum;
}
void init()
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i==j) e[i][j]=0;
else e[i][j]=inf;
}
}
}
标签:
原文地址:http://blog.csdn.net/chudongfang2015/article/details/51348113