pku 1285

  1. #include <iostream> 
  2. #include <cstring> 
  3. const int MAX=101; 
  4. const int INF=100000; 
  5. using namespace std; 
  6. void prim(int matrix[][MAX],int N,int u)  
  7. {
  8.     int i,j,k;
  9.     int min;
  10.     int mincost=0; 
  11.     int lowcost[MAX]; 
  12.     for(i=0;i<N;i++) 
  13.         lowcost[i]=matrix[u][i]; 
  14.     for(i=1;i<N;i++) 
  15.     { 
  16.         min=INF;
  17.         for(j=0;j<N;j++) 
  18.             if(lowcost[j] && lowcost[j]<min)  
  19.             {  
  20.                 min=lowcost[j];  
  21.                 k=j;  
  22.             } 
  23.         mincost+=min; 
  24.         lowcost[k]=0; 
  25.         for(j=0;j<N;j++) 
  26.             if(lowcost[j] && lowcost[j]>matrix[k][j]) 
  27.                 lowcost[j]=matrix[k][j]; 
  28.     } 
  29.     printf("%d/n",mincost); 
  30. int main() 
  31. {  
  32.     int N;  
  33.     int i,j; 
  34.     int matrix[MAX][MAX]; 
  35.     while(cin >> N) 
  36.     {
  37.         for(i=0;i<N;i++) 
  38.             for(j=0;j<N;j++) 
  39.                 scanf("%d",&matrix[i][j]); 
  40.         prim(matrix,N,0); 
  41.     } 
  42.     return 0; 
  43. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值