次小生成树模板,别忘了判定不存在最小生成树的情况

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; const int maxn = + ;
const int inf = 0x3f3f3f3f;
int MAX[maxn][maxn], mp[maxn][maxn], dis[maxn], pre[maxn];
int t, n, m;
bool vis[maxn], used[maxn][maxn];
inline int min( int a,int b ){
return a<b ? a:b;
} inline int max( int a, int b ){
return a>b ? a:b;
} inline int prim(){
int res = ;
memset( vis, , sizeof(vis) );
memset( used, , sizeof(used) );
memset( MAX, , sizeof(MAX) );
for( int i=; i<=n; i++ ){
pre[i] = ;
dis[i] = mp[i][];
}
vis[] = ;
dis[] = pre[] = ;
for( int i=; i<n; i++ ){
int minid, MIN = inf;
for( int j=; j<=n; j++ ) if( !vis[j] && MIN>dis[j] ) MIN = dis[minid=j];
if( MIN==inf ) return -; //不存在最小生成树
res += MIN;
vis[minid] = ;
used[minid][pre[minid]] = used[pre[minid]][minid] = ;
for( int j=; j<=n; j++ ){
if( vis[j] ) MAX[minid][j] = MAX[j][minid] = max( dis[minid], MAX[j][pre[minid]] );
if( !vis[j] && dis[j]>mp[minid][j] ){
pre[j] = minid;
dis[j] = mp[minid][j];
}
}
}
return res;
} int main(){
scanf("%d", &t);
while( t-- ){
scanf("%d%d", &n, &m);
memset( mp, inf, sizeof(mp) );
for( int i=; i<m; i++ ){
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
mp[u][v] = mp[v][u] = w;
}
int min_ans = prim(), ans = inf;
if( min_ans==- ){ printf("Not Unique!\n"); continue; } //不存在最小生成树
for( int i=; i<=n; i++ )
for( int j=i+; j<=n; j++ )
if( mp[i][j]!=inf && !used[i][j] )
ans = min( ans, min_ans+mp[i][j]-MAX[i][j] );
if( ans==min_ans ) printf("Not Unique!\n");
else printf("%d\n", min_ans);
} return ;
}

poj1679The Unique MST(次小生成树模板)的更多相关文章

  1. POJ_1679_The Unique MST(次小生成树模板)

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

  2. POJ-1679 The Unique MST,次小生成树模板题

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K       Description Given a connected undirec ...

  3. POJ1679 The Unique MST —— 次小生成树

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

  4. POJ1679 The Unique MST[次小生成树]

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 28673   Accepted: 10239 ...

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

    题目链接 Description Given a connected undirected graph, tell if its minimum spanning tree is unique. De ...

  6. POJ_1679_The Unique MST(次小生成树)

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

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

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

  8. POJ 1679 The Unique MST (次小生成树kruskal算法)

    The Unique MST 时间限制: 10 Sec  内存限制: 128 MB提交: 25  解决: 10[提交][状态][讨论版] 题目描述 Given a connected undirect ...

  9. poj 1679 The Unique MST (次小生成树(sec_mst)【kruskal】)

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 35999   Accepted: 13145 ...

随机推荐

  1. [Mobi] 移动端应用技术选型的思考, Native, Flutter, Quasar, React Native

    今天我主要是从开发 **不同产品** 和 **技术力量差别** 两个方面来做一个比较: Native 除了两端的技术力量要求高.花的功夫多,没毛病,看你有没有这个实力. Flutter 通过实现中间层 ...

  2. Vue+abp树形表格

    项目中需要用到树形表格,其他同学找了一个ZkTable,我也就跟着用了,不太好用,有更好的记得联系我.先说下缺点,如果这些不能满足你,后面也没必要看了. 缺点如下(也可能我不会用,如果你会一定记得告诉 ...

  3. “无法从节点xx检索exectask的版本” 原因分析

    客户有一套部署在Window 2008 R2 sp环境下的12.1.0.2 RAC环境,该RAC基于策略管理.因为业务需要,现在需要更换部分设备——踢出两台2路的服务器(节点名称分别为racnode2 ...

  4. python 判断一个对象是可迭代对象

    那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断: >>> from collections import Iterable &g ...

  5. SGU 126. Boxes --- 模拟

    <传送门> 126. Boxes time limit per test: 0.25 sec. memory limit per test: 4096 KB There are two b ...

  6. PAT甲级1006水题飘过

    题目分析:由于不存在相同的两个时间(24:00:00和00:00:00不会同时存在),则我们假设两个全局变量存放到达的最早的时间和达到的最晚的时间,设置最早的初值为“23:59:59”,设置最晚的初值 ...

  7. 个人学习笔记:C语言程序结构

    个人笔记:C语言程序 函数 语句 输入输出对象 标识符 关键字 函数 一个C语言源程序,是由一个或多个函数定义顺序组成的,其中必须有一个函数名为main的主函数.C语言源程序中的函数是指完成特定数据处 ...

  8. Kibana访问报错

    浏览器访问提示:Kibana server is not ready yet 查看日志如下 {"type":"log","@timestamp&quo ...

  9. 2、Shell命令学习笔记

    1.Shell命令行解释器 1.1 Shell命令解释器 Shell是一个特殊的应用程序,介于操作系统内核和用户之间,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行. 因 ...

  10. MSP---助力企业轻松上云

    一.企业上云的总体步骤 1.传统企业级应用上云方法论概述 2.应用现代化概念 3.应用上云都需要什么 1.评估该应用是否可以上云, 2.上云需要付出多少时间和人力 3.企业级应用案例 4.生成评估报告 ...