题目链接:http://poj.org/problem?id=1679

题意:给你一组数据,让你判断是否是唯一的最小生成树。

题解:这里用的是kuangbin大佬的次小生成树的模板。直接判断一下次小生成树的最小花费和最小生成树的是否一样即可。

代码:

 #include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int maxn = ;
const int inf = 0x3f3f3f3f; bool vis[maxn];
int lowc[maxn];
int pre[maxn];
int Max[maxn][maxn];//Max[i][j]表示在最小生成树中从i到j的路径中的最大边权
bool used[maxn][maxn];
int mp[maxn][maxn];
int n,m; int prim(){
int ans = ;
memset(vis,false,sizeof(vis));
memset(Max,,sizeof(Max));
memset(used,false,sizeof(used)); vis[] = true;
pre[] = -; for(int i = ; i < n; i++){
lowc[i] = mp[][i];
pre[i] = ;
} lowc[] = ;
for(int i = ; i < n;i++){
int minc = inf;
int p = -;
for(int j = ; j < n;j++)
if(!vis[j] && minc > lowc[j]){
minc = lowc[j];
p = j;
}
if(minc == inf) return -;
ans += minc;
vis[p] = true;
used[p][ pre[p] ] = used[ pre[p] ][p] = true;
for(int j = ; j < n; j++){
if(vis[j])
Max[j][p] = Max[p][j] = max(Max[j][ pre[p] ],lowc[p]);
if(!vis[j] && (lowc[j] > mp[p][j] ) ){
lowc[j] = mp[p][j];
pre[j] = p;
}
}
}
return ans;
}
int ans;
int smst(){
int minn = inf;
for(int i = ; i < n; i++)
for(int j = i+ ; j < n;j++)
if(mp[i][j] != inf && !used[i][j]){
minn = min(minn, ans + mp[i][j] - Max[i][j]);
}
if(minn == inf) return -;//不存在
return minn;
} int main(){
int T;
cin>>T;
while(T--){
cin>>n>>m;
int x,y,w;
memset(mp,inf,sizeof(mp));
for(int i = ; i < n ;i++){
mp[i][i] = ;
}
while(m--){
cin>>x>>y>>w;
x--,y--;
mp[x][y] = mp[y][x] = w;
}
ans = prim();
//cout<<smst()<<endl;
if(ans == -){
cout<<"Not Unique!"<<endl;
}
else if( ans == smst()){
cout<<"Not Unique!"<<endl;
}
else{
cout<<ans<<endl;
}
} return ;
}

【POJ】1679 The Unique MST的更多相关文章

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

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

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

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

  3. poj 1679 The Unique MST(唯一的最小生成树)

    http://poj.org/problem?id=1679 The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submis ...

  4. poj 1679 The Unique MST

    题目连接 http://poj.org/problem?id=1679 The Unique MST Description Given a connected undirected graph, t ...

  5. poj 1679 The Unique MST (判定最小生成树是否唯一)

    题目链接:http://poj.org/problem?id=1679 The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total S ...

  6. 【转】并查集&MST题集

    转自:http://blog.csdn.net/shahdza/article/details/7779230 [HDU]1213 How Many Tables 基础并查集★1272 小希的迷宫 基 ...

  7. 【POJ】1704 Georgia and Bob(Staircase Nim)

    Description Georgia and Bob decide to play a self-invented game. They draw a row of grids on paper, ...

  8. 【POJ】1067 取石子游戏(博弈论)

    Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...

  9. POJ 1679 The Unique MST 【最小生成树/次小生成树模板】

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

随机推荐

  1. Django 模型层关系映射

    一.一对一映射 1.什么是一对一 A表中的一条记录只能与B表中的一条记录相关联如:一夫一妻制 2.语法 允许在关联的两个类的任何一个类中 增加: 属性 = models.OneToOneField(E ...

  2. 是否有任何python库可以从自然语言中解析日期和时间?

    我正在寻找的是可以将“明天早上6点”或“中午的下一个模拟”转换为适当的日期时间对象. 解决方案 parsedatetime - 能够解析“人类可读”日期/时间表达式的Python模块. #!/usr/ ...

  3. 结对编程(四则运算题目生成器core第七组)对接心得

    在这篇博客博主想记录一下此次结队编程作业中与ui组对接的心得.在这里我也想表达一下对涂涵越同学的敬佩,他遇到困难时孜孜不倦求解的毅力着实让我佩服,我们在dll的生成上遇到了很大的困难,要不是他的坚持我 ...

  4. 将Eclipse项目转换成AndroidStudio项目过程中遇到的问题以及解决方法

    将Eclipse项目转换成AndroidStudio项目也不是第一次了,昨天转的时候遇到几个问题: 首先将项目导入androidstudio,导完后报错: 问题一: Error:java.util.c ...

  5. 使用 Audacity 录制声卡声音

    在Linux中使用 Audacity 录制电脑播放的声音非常简单,其实主要设置不在 Audacity 上,而是要设置好输入设备并选择对录音输入源. 首先确认输入设备中 内置音频的Monitor 没有被 ...

  6. Kali Linux更新和配置

    1.用vim打开 /etc/apt/source.list root@kali:~# vim /etc/apt/sources.list #中科大 deb http://mirrors.ustc.ed ...

  7. delphi和C# 保存exe文件到数据库

    Delphi: procedure TForm1.Button1Click(Sender: TObject); var strSQL, sfilename: string; MStream: TMem ...

  8. spring.xml及注解

    spring.xml配置文件中配置注解: 开启注解(及自动扫描包中bean): 1:<context:component-scan base-package="com.bzu" ...

  9. Database - 数据库隔离级别

    总结 数据库在并发的情况下,可能会出现: 脏读 不可重复读 --> 原因:UPDATE操作 幻读 --> 原因:INSERT/DELETE操作 为了避免以上问题,数据库事务增加隔离级别,来 ...

  10. python3-xlwt-Excel设置(字体大小、颜色、对齐方式、换行、合并单元格、边框、背景、下划线、斜体、加粗)

    搬运出处: https://blog.csdn.net/weixin_44065501/article/details/88899257 # coding:utf-8 import patterns ...