Fancy Mouse
- -|||
所谓赤裸裸最小生成树模型……就是这个啦
这里用Prim算法。诶?不知道Prim算法什么东东?去恶补一下图论算法吧~.~
#include<iostream>
using namespace std;

const int N = 100;
long Prim(long weight[N][N],int farms);
int main()
{
    
int data,farms;
    
long distance[N][N];
    cin
>>data;
    
while(data-- > 0)
    
{
        cin
>>farms;
        
for(int i=0;i<farms;i++)
            
for(int j=0;j<farms;j++)
                cin
>>distance[i][j];
        cout
<<Prim(distance,farms)<<endl;
    }

    
return 0;
}

long Prim(long weight[N][N],int farms)
{
    
int used[N],i,j,k,curfarm=0;
    
long curmin,min=0;
    
for(i=0;i<farms;i++) used[i] = 0;
    used[
0= 1;
    
for(i=1;i<farms;i++)
    
{
        curmin 
= 0x7fffffff;
        
for(j=0;j<farms;j++)
            
if(used[j])
            
{
                
for(k=0;k<farms;k++)
                    
if(!used[k] && weight[j][k] < curmin)
                    
{
                        curmin 
= weight[j][k];
                        curfarm 
= k;
                    }

            }

            used[curfarm] 
= 1;
            min 
+= curmin;
    }

    
return min;
}
posted on 2005-10-05 02:08  Fancy Mouse  阅读(272)  评论(1编辑  收藏  举报