#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 110;
const int INF = 0x3f3f3f3f;
int map[maxn][maxn], used[maxn][maxn], lowc[maxn],pre[maxn];
int n, m, vis[maxn], Max[maxn][maxn];
void init ()
{
for (int i=0; i<maxn; i++)
for (int j=0; j<maxn; j++)
if (i == j)
map[i][j] = 0;
else
map[i][j] = INF;
memset (used, 0, sizeof(used));
memset (lowc, 0, sizeof(lowc));
memset (pre, 0, sizeof(pre));
memset (vis, 0, sizeof(vis));
}
int prim (int s)
{
int ans = 0, mini, p;
for (int i=1; i<=n; i++)
{
lowc[i] = map[s][i];
pre[i] = s;
}
vis[s] = 1;
for (int i=1; i<n; i++)
{
mini = INF;
for (int j=1; j<=n; j++)
{
if (!vis[j] && mini>lowc[j])
{
mini = lowc[j];
p = j;
}
}
ans += mini;
vis[p] = 1;
used[p][pre[p]] = used[pre[p]][p] = 1;
for (int j=1; j<=n; j++)
{
if (vis[j] && p!=j)
Max[p][j] = Max[j][p] = max (Max[j][pre[p]], lowc[p]);
if (!vis[j] && map[j][p]<lowc[j])
{
lowc[j] = map[j][p];
pre[j] = p;
}
}
}
return ans;
}
int SMST (int ans)
{
int mini = INF;
for (int i=1; i<=n; i++)
for (int j=i+1; j<=n; j++)
if (!used[i][j] && map[i][j]!=INF)
mini = min (mini, ans - Max[i][j] + map[i][j]);
return mini;
}

int main ()
{
int t;
scanf ("%d", &t);
while (t --)
{
init ();
scanf ("%d %d", &n, &m);
while (m --)
{
int u, v, s;
scanf ("%d %d %d", &u, &v, &s);
map[u][v] = map[v][u] = s;
}
int num1 = prim(1);
int num2 = SMST(num1);
if (num1 != num2)
printf ("%d\n", num1);
else
printf ("Not Unique!\n");
}
return 0;
}

最新文章

  1. Double的精度问题
  2. 使用Nginx负载均衡搭建高性能.NETweb应用程序一
  3. Swiper的简单实用方法
  4. 关于bootstrap--表单(水平表单)
  5. redis基础操作
  6. WebForm 内置对象、数据增删改、状态保持
  7. Vue-Router动态路由匹配
  8. Linux 安装源码软件
  9. python学习的准备工作
  10. matlab颜色映射colormap() pcolor()
  11. 2017-9-12-Linux移植&amp;驱动开发
  12. vs 2010中如何检查内存泄露
  13. [转]C#API 实现锁屏+关屏
  14. HDU1693 Eat the Trees(zerojudge a228)
  15. c++多态性详解(转)
  16. ADC Power Supplies
  17. CentOS 7 Fail2ban防暴力破解
  18. usb入门学习
  19. Problem A: 指针:调用自定义交换函数,完成三个数整从小到大排列
  20. Linux 安装 python 指定版本--编译源码方式

热门文章

  1. go学习资料
  2. 【Caffe代码解析】Blob
  3. Redis源码阅读-sds字符串源码阅读
  4. linux heads分析(转)
  5. 解决google登录界面input输入框颜色不正确问题
  6. java数据结构-Vector
  7. Windows 7 里进程管理器里面的各列是什么含义?主要是和内存有关的内存-专用工作集,内存-工作集,内存-提交大小???
  8. [Android Studio 权威教程]AS 中配置强大的版本号管理系统(Git、SVN、等)
  9. Myeclipse 文件注释和解注释
  10. 【BZOJ4069】[Apio2015]巴厘岛的雕塑 按位贪心+DP