首页 > 代码库 > 最小生成树问题
最小生成树问题
最小生成树问题
#include <iostream> using namespace std; #define MAX 20 #define INF 32767 int edges[MAX][MAX]; void prim(int v,int arr[MAX][MAX]) { int n=8; int lowcost[MAX]; int min; int closest[MAX],i,j,k; for(i=0;i<n;i++) { lowcost[i]=arr[v][i]; closest[i]=v; } for(i=1;i<n;i++) { min=INF; for(j=0;j<n;j++) if(lowcost[j]!=0&&lowcost[j]<min) { min=lowcost[j]; k=j; } printf("边 %d, %d:\n",closest[k],k); lowcost[k]=0; for(j=0;j<n;j++) { if(arr[k][j]!=0 && arr[k][j]<lowcost[j]) { lowcost[j]=edges[k][j]; closest[j]=k; } } } } int main() { int n=8; int i=0,j=0; for (i=0;i<n;i++) { for (j=0;j<n;j++) { cin>>edges[i][j]; } } prim(0,edges); return 0; }
最小生成树问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。