#include <stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
#include 
<limits.h>

#define MAXN 110
#define mmax(a,b) ( (a)> (b)? (a):(b) )
#define mmin(a,b) ( (a)< (b)? (a):(b) )

int n, m;
int map[MAXN][MAXN], cost[MAXN], total;
int pre[MAXN], stack[MAXN], top= 0;
int value[MAXN][MAXN];
bool ok= false;

void prim()
{
    
bool visite[MAXN];
    
    memset( visite, 
falsesizeof(visite) ); 
    memset( value, 
0sizeof(value) ); top= 0;
    
    visite[
1]= true;   total= 0; stack[top++]= 1;
    
forint i= 1; i<= n; ++i )
         cost[i]
= map[1][i], pre[i]= 1;
    
    
forint i= 1; i< n; ++i )
    {
        
int min= INT_MAX, k= -1;
        
        
forint j= 1; j<= n; ++j )
        
if!visite[j] && cost[j]>= 0 && cost[j]< min ) min= cost[j],k= j;

        
forint j= 0; j< top; ++j )
        {
            value[ stack[j] ][k]
= mmax( value[ pre[k] ][k], min );
            value[k][ stack[j] ]
= value[ stack[j] ][k];
        }
        
        visite[k]
= true; total+= min; stack[top++]= k;
        
        
forint j= 1; j<= n; ++j )
            
if!visite[j] && map[k][j]>= 0 && ( map[k][j]< cost[j] || cost[j]< 0 ) )
            cost[j]
= map[k][j], pre[j]= k;
    }
}

int secondtree()
{
    
int m= INT_MAX;
    
    
forint i= 1; i<= n; ++i )
    
forint j= 1; j<= n; ++j )
    
if( i!= j && i!= pre[j] && j!= pre[i] && map[i][j]>= 0 )
        m
= mmin( m, total- value[i][j]+ map[i][j] );
        
    
return m;
}

int main()
{
    
int test;
    scanf(
"%d",&test);
    
    
while( test-- )
    {    
        scanf(
"%d%d",&n,&m );
        
        
forint i= 0; i<= n; ++i )
        
forint j= 0; j<= n; ++j )
        map[i][j]
= -1;
        
        
forint i= 0; i< m; ++i )
        {
            
int u, v, d;
            scanf(
"%d%d%d",&u,&v, &d );
            
            map[v][u]
= d, map[u][v]= d;
        }
        
        prim();
        
int t= secondtree();
        
        
if( t== total ) puts("Not Unique!");
        
else            printf("%d\n",total );
    }
    
    
return 0;
}
posted on 2008-12-06 18:16 Darren 阅读(414) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理