#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;
}

次小生成树 POJ 2728的更多相关文章

  1. POJ 1679 The Unique MST (次小生成树)

    题目链接:http://poj.org/problem?id=1679 有t组数据,给你n个点,m条边,求是否存在相同权值的最小生成树(次小生成树的权值大小等于最小生成树). 先求出最小生成树的大小, ...

  2. poj 1679 The Unique MST 【次小生成树】【模板】

    题目:poj 1679 The Unique MST 题意:给你一颗树,让你求最小生成树和次小生成树值是否相等. 分析:这个题目关键在于求解次小生成树. 方法是,依次枚举不在最小生成树上的边,然后加入 ...

  3. poj 1679 The Unique MST 【次小生成树+100的小数据量】

    题目地址:http://poj.org/problem?id=1679 2 3 3 1 2 1 2 3 2 3 1 3 4 4 1 2 2 2 3 2 3 4 2 4 1 2 Sample Outpu ...

  4. POJ 1679 The Unique MST:次小生成树【倍增】

    题目链接:http://poj.org/problem?id=1679 题意: 给你一个图,问你这个图的最小生成树是否唯一. 题解: 求这个图的最小生成树和次小生成树.如果相等,则说明不唯一. 次小生 ...

  5. POJ 1679 The Unique MST(次小生成树)

    题意:求解最小生成树的权值是否唯一,即要我们求次小生成树的权值两种方法求最小生成树,一种用prim算法, 一种用kruskal算法 一:用prim算法 对于给定的图,我们可以证明,次小生成树可以由最小 ...

  6. poj 1679 次小生成树

    次小生成树的求法: 1.Prime法 定义一个二维数组F[i][j]表示点i到点j在最小生成树中的路径上的最大权值.有个知识就是将一条不在最小生成树中的边Edge加入最小生成树时,树中要去掉的边就是E ...

  7. (poj)1679 The Unique MST 求最小生成树是否唯一 (求次小生成树与最小生成树是否一样)

    Description Given a connected undirected graph, tell if its minimum spanning tree is unique. Definit ...

  8. poj 1679 The Unique MST【次小生成树】

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24034   Accepted: 8535 D ...

  9. POJ 1679:The Unique MST(次小生成树&amp;&amp;Kruskal)

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19941   Accepted: 6999 D ...

随机推荐

  1. inotify+rsync

    backup_to_rsync.sh #!/bin/bash #source function library . /etc/init.d/functions rsync_host=rsync.eti ...

  2. hdu 2349 最小生成树

    /* 刚開始想错了,我以为必须是相邻的点才干连接.原来无线距离能够随意连接 对最小生成树理解不够深啊 */ #include<stdio.h> #include<math.h> ...

  3. hdu 4454 Stealing a Cake(计算几何:最短距离、枚举/三分)

    题意:已知起点.圆.矩形,要求计算从起点开始,经过圆(和圆上任一点接触即可),到达矩形的路径的最短距离.(可以穿过园). 分析:没什么好的方法,凭感觉圆上的每个点对应最短距离,应该是一个凸函数,用三分 ...

  4. An internal error occurred during: &quot;J2EE Component Mapping Update&quot;.

    1.错误描写叙述 An internal error occurred during: "J2EE Component Mapping Update". java.lang.Nul ...

  5. 三星DRAM+NAND FLASH 合成MCP芯片介绍及应用攻略

    转自:http://blog.csdn.net/gao5528/article/details/6256119 三星DRAM+NAND FLASH 合成MCP芯片介绍及应用攻略(K5系列产品篇) 一年 ...

  6. 调用bat文件执行java文件

    set path=./jre7/bin--设置jre路径,可以写jre的全路径java -cp "lib/*;" -Xms256m -Xmx512m com.shentong.Ma ...

  7. iOS拓展:react-native创建工程的坑和解决方法

    正文 首先,在创建工程之前,你需要有环境.这个网上很多,不赘述. 我们直接从创建工程开始,一步步记叙这过程. 坑一 一.打开终端,cd到你放文件的位置(我放在桌面了): yuqideMacBook-A ...

  8. Lumen开发:结合Redis实现消息队列(3)

    4.运行队列监听器 开启任务监听器 Lumen包含了一个Artisan命令用来运行推送到队列的新任务.你可以使用queue:listen命令运行监听器: php artisan queue:liste ...

  9. ajax 和jsonp 不是一码事 细读详解

    由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯 ...

  10. 2016/05/17 thinkphp3.2.2 分页的使用:①在Home下设置Publics文件夹或在thinkPHP下library的vender 把page.class.php 考贝进入 ②通过new 实例化方式调用 $page=new \Home\Publics\Page($total,3);

    注意分页的方法有两种:一种是thinkphp3.2 自带的   另一种是之前新闻页用过的     显示效果稍有差别 显示效果: 细节问题: ①搜索页面  要加session判断   和  分页 ②修改 ...