【HDU - 6081】度度熊的王国战略(SW算法,全局最小割)
题干:
Problem Description 度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族。 哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士。 所以这一场战争,将会十分艰难。 为了更好的进攻哗啦啦族,度度熊决定首先应该从内部瓦解哗啦啦族。 第一步就是应该使得哗啦啦族内部不能同心齐力,需要内部有间隙。 哗啦啦族一共有n个将领,他们一共有m个强关系,摧毁每一个强关系都需要一定的代价。 现在度度熊命令你需要摧毁一些强关系,使得内部的将领,不能通过这些强关系,连成一个完整的连通块,以保证战争的顺利进行。 请问最少应该付出多少的代价。 Input 本题包含若干组测试数据。 第一行两个整数n,m,表示有n个将领,m个关系。 接下来m行,每行三个整数u,v,w。表示u将领和v将领之间存在一个强关系,摧毁这个强关系需要代价w 数据范围: 2<=n<=3000 1<=m<=100000 1<=u,v<=n 1<=w<=1000 Output 对于每组测试数据,输出最小需要的代价。 Sample Input
2 1 1 2 1 3 3 1 2 5 1 2 4 2 3 3 Sample Output
1 3 Source 2017"百度之星"程序设计大赛 - 资格赛 |
题目大意:
求全局最小割
解题报告:
求全局最小割
AC代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define F first
#define S second
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
typedef pair<int,int> PII;
const int MAX = 3e3 + 5;
const int INF = 0x3f3f3f3f;
int G[MAX][MAX];
int dis[MAX],id[MAX];
bool vis[MAX];
int n,m;
int SW(int n) {int res = INF;for(int i = 0; i<n; i++) id[i]=i;while(n>1) {memset(dis,0,sizeof dis);int k = 0;for(int i = 1; i<n; i++) {swap(id[k],id[i-1]);for(int j = k = i; j<n; j++) {dis[id[j]] += G[id[i-1]][id[j]];if(dis[id[j]] > dis[id[k]]) k = j;}}res = min(res,dis[id[k]]);int s = id[n-2],t=id[n-1];for(int i = 0; i<n-2; i++) {int u = id[i];G[u][s]=G[s][u]+=G[u][t];}id[k]=id[n--];}return res;
}
int main()
{while(~scanf("%d%d",&n,&m)) {for(int i = 0; i<=n; i++)for(int j = 0; j<=n; j++)G[i][j]=0;for(int u,v,w,i = 1; i<=m; i++) {scanf("%d%d%d",&u,&v,&w);u--,v--;G[u][v]+=w;G[v][u]+=w;}printf("%d\n",SW(n));} return 0 ;
}
【HDU - 6081】度度熊的王国战略(SW算法,全局最小割)相关推荐
- 2017百度之星资格赛:1002. 度度熊的王国战略
度度熊的王国战略 Accepts: 69 Submissions: 2102 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32 ...
- HDU 6082 度度熊与邪恶大魔王 (完全背包)
度度熊与邪恶大魔王 Time Limit: 2000/1000 MS ( ...
- HDU - 6082 度度熊与邪恶大魔王(背包变式)
度度熊与邪恶大魔王 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式,第i种攻击方式,需 ...
- HDU 6113 度度熊的01世界【DFS/Flood Fill】
度度熊的01世界 Accepts: 967 Submissions: 3064 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/ ...
- HDU 6082 度度熊与邪恶大魔王(01背包)
Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式,第i种攻击方式 ...
- hdu 6080 度度熊保护村庄
题意 哗啦啦村袭击了喵哈哈村! 度度熊为了拯救喵哈哈村,带着自己的伙伴去救援喵哈哈村去了!度度熊与伙伴们很快的就过来占据了喵哈哈村的各个军事要地,牢牢的守住了喵哈哈村. 但是度度熊发现,这是一场旷日持 ...
- 【hdu 6082 度度熊与邪恶大魔王 】 完全背包
hdu 6082 这道题一拿过来 对一个熊直接跑完全背包 然后跑 100000 次 完美TLE 其实因为对一个熊跑的时候 下次熊还是会跑的 于是需要对所有的熊直接完全背包预处理 设 dp[i][j] ...
- HDU - 6082——度度熊与邪恶大魔王 (背包+DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6082 思路:dp[i][j]代表打死血量为i,防御力为j的怪兽要用的最少晶石.用背包的方式dp. #i ...
- HDU - 6118 度度熊的交易计划(最大费用可行流)
题目链接:点击查看 题目大意:给出一张 n 个点 m 条边的有向图,每个点可以生产至多 b[ i ] 个物品,每个物品花费为 a[ i ] ,可以出售至多 d[ i ] 个物品,每个物品售价为 c[ ...
最新文章
- Web应用开发技术(1)-html
- [转] 移动平台Html5的viewport使用经验
- 用C#编写Linux守护进程
- 1.Office 365系列(-)
- maven打包报错:Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.5:test
- 酷狗音乐、艺龙旅行等42款APP被曝违规收集用户信息
- Java基础类冒泡排序_Java基础 -- 冒泡排序算法(带详细注释)
- numpy中array的维度之-------一维向量和一维数组的区别。
- 数据库学习笔记5-隔离级别 Repeatable Read
- springcloud gateway 鉴权_SuperBoot框架是基于SpringCloud、SpringBoot敏捷开发框架
- C语言结构体内存对齐
- 各种激活函数求导公式
- 诛仙mysql架设_目前最完整的诛仙私服架设教程
- 张小龙2018微信公开课超时演讲,总结微信8年
- 今日头条悟空问答实现高效引流,轻松月入过万
- sybase 珍藏系列之一
- RPC(远程过程调用)详解
- 电池电压(电量)检测器的制作
- DXOMark是如何评价音频质量的
- 关于对象转json字符串的几个工具比较
热门文章
- HDU1856_More is better
- [Kali][VMware][2020][窗口大小][分辨率]高分辨率自适应
- [剑指offer][JAVA]面试题第[18]题[删除链表的节点]
- [剑指offer][JAVA]面试题第[12]题[矩阵的路径][DFS][剪枝]
- 2异常处理_Java处理异常2种机制关键字区别解析
- webgl 游戏_如何选择 WebGL 框架和引擎?
- python扩展库不是用于科学计算的有_有哪些科学计算的开源库
- thinkphp mysql函数_thinkphp对数据库操作有哪些内置函数
- cc2530i2c可同时接受两个传感器的数据吗_汽车方向及维修_玉树沃尔沃S40方向机,宝马531电子方向机进水可以维修吗...
- UE4 HTC VIVE - 番外篇 - 局域网联机三