POJ 1679
求一次最小成树,求一次小生成树,若相等,则不唯一。否则,唯一。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std;
const int MAXN=;
const int inf=;
int map[MAXN][MAXN]; int f[MAXN][MAXN];
bool exist[MAXN][MAXN],used[MAXN][MAXN];
int least[MAXN],pre[MAXN]; bool vis[MAXN];
int n,m,ans1,ans2; void prim(){
memset(f,,sizeof(f));
least[]=;
for(int i=;i<=n;i++){
least[i]=map[][i];
if(least[i]!=inf)
pre[i]=;
}
vis[]=true;
for(int i=;i<=n;i++){
int min=inf,p=-;
for(int k=;k<=n;k++){
if(least[k]<min&&!vis[k]){
p=k; min=least[k];
}
} if(p==-) return ;
ans1+=min;
used[pre[p]][p]=used[p][pre[p]]=;
for(int j=;j<=n;j++){
if(vis[j])
f[j][p]=max(f[j][pre[p]],map[pre[p]][p]);
f[p][j]=f[j][p];
}
vis[p]=true;
for(int k=;k<=n;k++){
if(!vis[k]&&map[p][k]<least[k]){
least[k]=map[p][k];
pre[k]=p;
}
}
}
} void secondT(){
ans2=inf;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(exist[i][j]&&!used[i][j]&&ans1 + map[i][j] - f[i][j] < ans2)
ans2=ans1 + map[i][j] - f[i][j];
}
}
} int main(){
int T;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
int u,v,d;
ans1=ans2=;
memset(exist,-,sizeof(exist));
for(int i=;i<=n;i++){
for(int j=i;j<=n;j++)
map[i][j]=map[j][i]=inf;
}
for(int i=;i<=m;i++){
scanf("%d%d%d",&u,&v,&d);
map[u][v]=map[v][u]=d;
exist[u][v]=exist[v][u]=;
}
memset(pre,-,sizeof(pre));
memset(used,,sizeof(used));
memset(vis,false,sizeof(vis));
prim();
secondT();
if(ans1==ans2)
printf("Not Unique!\n");
else printf("%d\n",ans1);
}
return ;
}
POJ 1679的更多相关文章
- poj 1679 The Unique MST 【次小生成树】【模板】
题目:poj 1679 The Unique MST 题意:给你一颗树,让你求最小生成树和次小生成树值是否相等. 分析:这个题目关键在于求解次小生成树. 方法是,依次枚举不在最小生成树上的边,然后加入 ...
- poj 1679 The Unique MST
题目连接 http://poj.org/problem?id=1679 The Unique MST Description Given a connected undirected graph, t ...
- poj 1679 http://poj.org/problem?id=1679
http://poj.org/problem?id=1679 The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submis ...
- POJ 1679 The Unique MST (次小生成树)
题目链接:http://poj.org/problem?id=1679 有t组数据,给你n个点,m条边,求是否存在相同权值的最小生成树(次小生成树的权值大小等于最小生成树). 先求出最小生成树的大小, ...
- poj 1679 The Unique MST(唯一的最小生成树)
http://poj.org/problem?id=1679 The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submis ...
- POJ 1679 The Unique MST(判断最小生成树是否唯一)
题目链接: http://poj.org/problem?id=1679 Description Given a connected undirected graph, tell if its min ...
- (最小生成树 次小生成树)The Unique MST -- POJ -- 1679
链接: http://poj.org/problem?id=1679 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82831#probl ...
- poj 1679 The Unique MST (判定最小生成树是否唯一)
题目链接:http://poj.org/problem?id=1679 The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total S ...
- 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 ...
- POJ 1679 The Unique MST:次小生成树【倍增】
题目链接:http://poj.org/problem?id=1679 题意: 给你一个图,问你这个图的最小生成树是否唯一. 题解: 求这个图的最小生成树和次小生成树.如果相等,则说明不唯一. 次小生 ...
随机推荐
- bzoj4197 [Noi2015]寿司晚宴——状压DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4197 首先,两个人选的数都互质可以看作是一个人选了一个数,就相当于选了一个质因数集合,另一个 ...
- PCB 一键远程桌面+RDP文件生成
最近在写个内网INCAM内网授权工具中,在服务端监听客户端请求后,后台自动处理客户端请求并远程客户端 这里记录3个点. 一.运行RDP文件后,正常会有下图2个弹窗,怎么可以关闭这2个弹窗呢, 通过模拟 ...
- B. Sereja and Suffixes(cf)
http://codeforces.com/problemset/problem/368/B B. Sereja and Suffixes time limit per test 1 second m ...
- 制作一个 JavaScript 小游戏
简评: 作者学习了编程两个月,边学边做了一个 JavaScript 小游戏,在文中总结了自己在这个过程中的一些体会,希望能给其他初学者一些帮助. 对于很多想学编程但一直没下定决心的同学来说,最大的问题 ...
- Ionic学习记录(一):ionic及cordova安装、创建第一个应用、项目结构
目录: 一.ionic的安装 二.创建第一个应用程序 三.浏览器中预览应用 四.项目结构 五.添加页面 一.ionic的安装 使用Ionic创建和开发应用程序主要通过Ionic命令行实用程序(“CLI ...
- BZOJ 1511 KMP
题意:求出每个前缀的最长周期之和(等于本身的算0) 思路: 求出来next数组 建出next树 找到不为0的最小的 n减去它就是答案 //By SiriusRen #include <cstd ...
- CDN 内容分发网络
第一步,HTML的文件引用:HTML的文件头(也有文件中,文件尾)那边常有其他文件引用,比如CSS以及JS的引用. 就以bootstrap常用的引用来举个栗子你常见的引用可能会是这样的: <he ...
- Bootstrap栅格系统&媒体查询
bootstrap中几乎所有元素的盒子模型为IE下的盒模型,通俗点说就是box-sizing设置成了:border-box. 栅格系统 媒体查询 媒体查询是非常别致的"有条件的 CSS ...
- Unity引擎GUI之Canvas和EventSystem
最近想写一套关于UGUI所有控件的基础使用教程系列,主要是根据本人的使用心得以及部分测试附带字面翻译来写的,所以其中可能难以避免会有不正确的地方. 好了进入主题,既然是第一篇,我觉得我有必要先介绍一下 ...
- (List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列。 例如: List list = new ArrayList(); list.add(“Hello”); list.add(“World”); list.add(“Learn”); //此时list 为Hello World Learn rever
import java.util.ArrayList; import java.util.List; public class AA { public static void main(String[ ...