标签:
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