求一次最小成树,求一次小生成树,若相等,则不唯一。否则,唯一。

 #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的更多相关文章

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

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

  2. poj 1679 The Unique MST

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

  3. 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 ...

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

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

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

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

  6. POJ 1679 The Unique MST(判断最小生成树是否唯一)

    题目链接: http://poj.org/problem?id=1679 Description Given a connected undirected graph, tell if its min ...

  7. (最小生成树 次小生成树)The Unique MST -- POJ -- 1679

    链接: http://poj.org/problem?id=1679 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82831#probl ...

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

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

  9. 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 ...

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

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

随机推荐

  1. B1295 [SCOI2009]最长距离 最短路

    就是一道最短路的裸题,直接跑spfa就行了.(spfa死了) 最后在答案处判断是否障碍物太多,然后就直接找最大值就行. (数据特别水,我错误算法60) 题干: Description windy有一块 ...

  2. rabbitmq普通集群搭建详细步骤

    由于工作需求,需要安装rabbitmq,学习之余,记录一下安装过程 准备基础编译环境yum install gcc glibc-devel make ncurses-devel openssl-dev ...

  3. SnackDown Online Qualifier 2017

    好久没做题了,然后就想着随便做一个.无奈cf都是晚上,然后就看见这个,随便做做. 资格赛,只要做出来1题就行了,4天的时间. 1. 水题 #include <iostream> #incl ...

  4. swift-自定义TabBar工具栏

    class EBTAppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(ap ...

  5. 【MFC】在MFC中PreTranslateMessage()的使用方法

    BOOL CSearchuserDlg::PreTranslateMessage(MSG* pMsg) { if (pMsg->message==WM_KEYDOWN) // 判断是否有按键按下 ...

  6. js邮箱正则表达式的使用

    在网页中插入邮箱输入框,当邮箱输入格式错误,给出提示.代码:function yy(){ var t = /^[A-Za-zd0-9]+([-_.][A-Za-zd]+)*@([A-Za-zd]+[- ...

  7. List 练习

    (List)已知有一个Worker 类如下: public class Worker { private int age; private String name; private double sa ...

  8. PCL:描述三维离散点的ROPS特征(Code)

    前言: 三维点云为三维欧式空间点的集合.对点云的形状描述若使用局部特征,则可分为两种:固定世界坐标系的局部描述和寻找局部主方向的局部描述,ROPS特征为寻找局部主方向的特征描述. 1.寻找主方向(对X ...

  9. 【技术累积】【点】【java】【20】static关键字

    基础概念 是个修饰符: 修饰变量.常量.方法.代码块: 被修饰的为静态: 方便在没有创建对象的情况下来进行调用(方法/变量): static修饰的成员被所有的对象所共享: static优先于对象存在, ...

  10. Centos6.6 安装Redis

    一.介绍 redis在做数据库缓存,session存储,消息队列上用的比较多 二.安装 $ yum install -y wget gcc make tcl $ wget http://downloa ...