?? 13_prim.cpp
字號:
#include <stdio.h>
#include <malloc.h>
#define infinite 9999
#define maxn 100
int cost[maxn][maxn];
int n,v;
void prim(){
int lowcost[maxn],min;
int closest[maxn],i,j,k;
for(i=1;i<=n;i++){
lowcost[i]=cost[v][i];closest[i]=v;
}
for(i=1;i<n;i++){
min=infinite;
for(j=1;j<=n;j++)
if((lowcost[j]!=0)&&(lowcost[j]<min)){
min=lowcost[j];
k=j;
}
printf("邊為:(%3d,%3d),權為:%5d\n",closest[k],k,min);
lowcost[k]=0;
for(j=1;j<=n;j++)
if((cost[k][j]!=0)&&(cost[k][j]<lowcost[j])){
lowcost[j]=cost[k][j];
closest[j]=k;
}
}
}
void main(){
int i,j,p;
printf("請輸入節點個數:");
scanf("%d",&n);
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
cost[i][j]=infinite;
for (i=1;i<=n;i++)
cost[i][i]=0;
for(i=1;i<=n;i++){
for(j=i+1;j<=n;j++)
{ printf("請輸入%d到%d的費用(輸入0為無窮大):",i,j);
scanf("%d",&p);
if(p!=0)
cost[i][j]=cost[j][i]=p;
else
cost[i][j]=cost[j][i]=infinite;
}
}
printf("請輸入起始節點位置:");
scanf("%d",&v);
prim();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -