UVALive 5099 Nubulsa Expo(全局最小割)
题面
题解
论文题
见2016绍兴一中王文涛国家队候选队员论文《浅谈无向图最小割问题的一些算法及应用》4节
全局最小割 板题
CODE
暴力O(n3)O(n^3)O(n3)
用堆优化可以做到O(nmlog)O(nmlog)O(nmlog)
这里只写了暴力
#include <bits/stdc++.h>
using namespace std;
template<class T>inline void read(T &x) {
char ch; while(!isdigit(ch=getchar()));
for(x=ch-'0';isdigit(ch=getchar());x=x*10+ch-'0');
}
typedef long long LL;
const int MAXN = 305;
LL c[MAXN][MAXN], sum[MAXN];
int n, m, s;
bool del[MAXN], inq[MAXN];
void merge(int u, int v) {
for(int i = 1; i <= n; ++i)
c[u][i] += c[v][i], c[i][u] += c[i][v];
del[v] = 1;
}
LL solve(int N) {
for(int i = 1; i <= n; ++i) sum[i] = inq[i] = 0;
int u=0, v=0;
for(int i = 1; i <= n; ++i) if(!del[i]) { v = i; break; }
while(--N) {
inq[u=v] = 1; v=0;
for(int i = 1; i <= n; ++i) if(!del[i] && !inq[i]) sum[i] += c[u][i];
for(int i = 1; i <= n; ++i) if(!del[i] && !inq[i] && sum[i] > sum[v]) v = i;
}
merge(u, v);
return sum[v];
}
int main () {
while(read(n), read(m), read(s), n&&m&&s) {
memset(del, 0, sizeof del);
for(int i = 1, x, y, z; i <= m; ++i)
read(x), read(y), read(z), c[x][y] += z, c[y][x] += z;
LL ans = 1ll<<50;
for(int i = n; i > 1; --i) ans = min(ans, solve(i));
printf("%lld\n", ans);
}
}
UVALive 5099 Nubulsa Expo(全局最小割)的更多相关文章
- UVALive 5099 Nubulsa Expo 全局最小割问题
B - Nubulsa Expo Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit S ...
- UVALive 5099 Nubulsa Expo 全球最小割 非网络流量 n^3
主题链接:点击打开链接 意甲冠军: 给定n个点m条无向边 源点S 以下m行给出无向边以及边的容量. 问: 找一个汇点,使得图的最大流最小. 输出最小的流量. 思路: 最大流=最小割. 所以题意就是找全 ...
- HDU 3691 Nubulsa Expo(全局最小割)
Problem DescriptionYou may not hear about Nubulsa, an island country on the Pacific Ocean. Nubulsa i ...
- HDU 3691 Nubulsa Expo(全局最小割Stoer-Wagner算法)
Problem Description You may not hear about Nubulsa, an island country on the Pacific Ocean. Nubulsa ...
- 全局最小割StoerWagner算法详解
前言 StoerWagner算法是一个找出无向图全局最小割的算法,本文需要读者有一定的图论基础. 本文大部分内容与词汇来自参考文献(英文,需***),用兴趣的可以去读一下文献. 概念 无向图的割:有无 ...
- ZOJ 2753 Min Cut (Destroy Trade Net)(无向图全局最小割)
题目大意 给一个无向图,包含 N 个点和 M 条边,问最少删掉多少条边使得图分为不连通的两个部分,图中有重边 数据范围:2<=N<=500, 0<=M<=N*(N-1)/2 做 ...
- 全局最小割Stoer-Wagner算法
借鉴:http://blog.kongfy.com/2015/02/kargermincut/ 提到无向图的最小割问题,首先想到的就是Ford-Fulkerson算法解s-t最小割,通过Edmonds ...
- HDU 6081 度度熊的王国战略(全局最小割堆优化)
Problem Description度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族.哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士.所以这一场战争,将会十分艰难.为了更好的进攻 ...
- HDU 6081 度度熊的王国战略(全局最小割Stoer-Wagner算法)
Problem Description 度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族. 哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士. 所以这一场战争,将会十分艰难. 为了更 ...
随机推荐
- Windows下mysql安装配置问题
下载最新版的mysql: https://dev.mysql.com/downloads/mysql/ 下载完成后解压打开安装包如下 打开cmd以管理员身份运行(一定要以管理员身份运行) 然后输入命令 ...
- nginx实现tcp负载均衡
1 安装支持库 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel yum install pcre-d ...
- Mysql中类似于Oracle中connect by ... start with的查询语句(木大看懂)
表结构 create table sys_branch ( id ) not null, parent_id ), branch_name ), delete_flag ), primary key ...
- Mybatis中实体类属性与数据库列表间映射方法介绍
这篇文章主要介绍了Mybatis中实体类属性与数据列表间映射方法介绍,一共四种方法方法,供大家参考. Mybatis不像Hibernate中那么自动化,通过@Co ...
- Numpy中矩阵和数组的区别
矩阵(Matrix)和数组(Array)的区别主要有以下两点: 矩阵只能为2维的,而数组可以是任意维度的. 矩阵和数组在数学运算上会有不同的结构. 代码展示 1.矩阵的创建 采用mat函数创建矩阵 c ...
- kotlin --- 时间戳与字符串互相转换
直接贴代码,清晰易懂.喜欢点个赞 class Timestamp { /** * Timestamp to String * @param Timestamp * @return String */ ...
- Xcode中提高效率的快捷键
依稀记得大神都是使用超多的快捷键来开发的.虽然要成为大神的路很远,不过把下面这些快捷键用熟练,就相当于把宝剑磨的既快又光,相当于有了一件极品的装备,对于接下来的打(升)怪(职)升(加)级(薪)那肯定是 ...
- 全栈项目|小书架|服务器开发-Koa2 连接MySQL数据库(Navicat+XAMPP)
为什么使用数据库 为什么需要数据库?-知乎 相比与文件系统,数据库具有以下优势: 高效率:查找效率高 高可用:可数据库共享 安全性强:数据不能随意修改 选择哪个数据库 数据库可以分为关系型数据库和非关 ...
- RequestBody只能读取一次的问题
一.为什么只能读一次 原因很简单:因为是流.想想看,java中的流也是只能读一次,因为读完之后,position就到末尾了. 二.解决办法 思路:第一次读的时候,把流数据暂存起来.后面需要的时候,直接 ...
- node.js开发 npm包管理工具
npm介绍 说明:npm(node package manager)是nodejs的包管理器,用于node插件管理(包括安装.卸载.管理依赖等) 使用npm安装插件:命令提示符执行npm instal ...