首页 > 代码库 > 最小生成树问题

最小生成树问题

      最小生成树问题


#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; }

 

最小生成树问题