poj1679最小生成树是否唯一
http://www.cnblogs.com/kuangbin/p/3147329.html
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=110;
const int INF=0x3f3f3f3f;
bool vis[N];
int lowc[N],pre[N],Max[N][N];
bool used[N][N];
int Prim(int cost[][N],int n){
int ans=0;
memset(vis,0,sizeof(vis));
memset(Max,0,sizeof(Max));
memset(used,0,sizeof(used));
vis[0]=1;
pre[0]=-1;
for(int i=1;i<n;++i) {
lowc[i]=cost[0][i];
pre[i]=0;
}
lowc[0]=0;
for(int i=1;i<n;++i){
int minc=INF;
int p=-1;
for(int j=0;j<n;++j) if(!vis[j]&&minc>lowc[j]) {
minc=lowc[j];
p=j;
}
if(minc==INF) return -1;
ans+=minc;
vis[p]=1;
used[p][pre[p]]=used[pre[p]][p]=1;
for(int j=0;j<n;++j){
if(vis[j]) Max[j][p]=max(Max[j][pre[p]],lowc[p]);
if(!vis[j]&&lowc[j]>cost[p][j]) {
lowc[j]=cost[p][j];
pre[j]=p;
}
}
}
return ans;
}
int ans;
int smst(int cost[][N],int n){
int minn=INF;
for(int i=0;i<n;++i)
for(int j=i+1;j<n;++j)
if(cost[i][j]!=INF&&!used[i][j])
minn=min(minn,ans+cost[i][j]-Max[i][j]);
if(minn==INF) return -1;
return minn;
}
int cost[N][N];
int main(){
int T,n,m;
for(scanf("%d",&T);T--;){
scanf("%d%d",&n,&m);
int u,v,w;
for(int i=0;i<n;++i)
for(int j=0;j<n;++j)
if(i==j) cost[i][j]=0;
else cost[i][j]=INF;
while(m--){
scanf("%d%d%d",&u,&v,&w);
--u;--v;
cost[u][v]=cost[v][u]=w;
}
ans=Prim(cost,n);
if(ans==-1) {
puts("Not Unique");
continue;
}
if(ans==smst(cost,n)) puts("Not Unique");
else printf("%d\n",ans);
}
}
poj1679最小生成树是否唯一的更多相关文章
- POJ-1679 The Unique MST---判断最小生成树是否唯一
题目链接: https://vjudge.net/problem/POJ-1679 题目大意: 给定一个无向连通网,判断最小生成树是否唯一. 思路: (1)对图中的每条边,扫描其他边,如果存在相同权值 ...
- poj1679(判断最小生成树是否唯一)
题意:给出n个点,m条边,要你判断最小生成树是否唯一. 思路:先做一次最小生成树操作,标记选择了的边,然后枚举已经被标记了的边,判断剩下的边组成的最小生成树是否与前面的相等,相等,则不唯一,否则唯一. ...
- POJ-1679 The Unique MST(次小生成树、判断最小生成树是否唯一)
http://poj.org/problem?id=1679 Description Given a connected undirected graph, tell if its minimum s ...
- POJ 1679 The Unique MST 【判断最小生成树是否唯一】
Description Given a connected undirected graph, tell if its minimum spanning tree is unique. Defini ...
- POJ 1679 The Unique MST(判断最小生成树是否唯一)
题目链接: http://poj.org/problem?id=1679 Description Given a connected undirected graph, tell if its min ...
- POJ 1679 The Unique MST (次小生成树 判断最小生成树是否唯一)
题目链接 Description Given a connected undirected graph, tell if its minimum spanning tree is unique. De ...
- 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 判断最小生成树是否唯一(图论)
借用的是Kruskal的并查集,算法中的一点添加和改动. 通过判定其中有多少条可选的边,然后跟最小生成树所需边做比较,可选的边多于所选边,那么肯定方案不唯一. 如果不知道这个最小生成树的算法,还是先去 ...
- 最小生成树(次小生成树)(最小生成树不唯一) 模板:Kruskal算法和 Prim算法
Kruskal模板:按照边权排序,开始从最小边生成树 #include<algorithm> #include<stdio.h> #include<string.h> ...
随机推荐
- tcpdump常用抓包命令
主要语法 过滤主机/IP: tcpdump -i eth1 host 172.16.7.206 抓取所有经过网卡1,目的IP为172.16.7.206的网络数据 过滤端口: tcpdump -i ...
- php安装igbinary扩展(windows)
pecl.php.net 是php的扩展仓库,访问此网站后,搜索需要安装的扩展,截图如下: igbinary: http://pecl.php.net/package/redis github的网址: ...
- Simple Math Problems
整理下<算法笔记>,方便查看. 一.最大公约数&最小公倍数 欧几里得定理:设a,b均为正整数,那么gcd(a,b)=gcd(b,a%b). 若,定理就先交换a和b. 注意:0和任意 ...
- Jaba_Web--JDBC 查询记录操作模板
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...
- P5960 差分约束算法模板
差分约束 差分约束,一般用来解决有\(n\)个未知数,\(m\)个不等式方程的问题,形如: \[\begin{cases} \ x_{a_1}-x_{b_1}\leq y_1\\ \ x_{a_2}- ...
- HTTP请求头中的X-Forwarded-For介绍
概述 我们在做nginx方向代理的时候,为了记录整个代理过程,我们往往会在配置文件中加上如下配置: location ^~ /app/download/ { ... proxy_set_header ...
- Jmeter的简单使用
前言 对于jmeter的使用有很多内容,本章节只是简单介绍jmeter的两个方面的内容:一个是使用jmeter模拟postman发送http请求,一个是使用jmete进行压力测试. 更多的内容请参考官 ...
- spring学习笔记(七)HttpMessageConverter
spring学习笔记(七)HttpMessageConverter 1. HttpMessageConverter的加载 2. 从StringMessageConverter探究消息转换器的原理 1. ...
- LeetCode--LinkedList--160. Intersection of Two Linked Lists(Easy)
160. Intersection of Two Linked Lists(Easy) 题目地址https://leetcode.com/problems/intersection-of-two-li ...
- 24款WordPress网站AI插件大盘点
------------恢复内容开始------------ 你想把AI(人工智能)技术和机器学习技术添加到自己的WordPress网站吗?本文中,我会分享24个利用AI技术和机器学习技术的WordP ...