bzoj 4349 最小树形图——朱刘算法
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4349.
学习博客:http://www.cnblogs.com/xzxl/p/7243466.html
关于这道题,图的边权不是 代价*次数 , 而就是一次的代价,因为只要考虑每个堡垒第一次以什么代价被打,之后都可以用最低代价打它。
注意 “不需要攻打” 的堡垒。注意重连边的时候把边的端点改成新的标号。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define db double
using namespace std;
const int N=,M=; const db INF=1e6;
int n,b[N];db a[N],mn[N]; bool ok[N];
namespace DMST{
int xnt,pre[N],id[N],vis[N]; db in[N];
struct Ed{
int x,y; db w;
Ed(int x=,int y=,db w=):x(x),y(y),w(w) {}
}ed[M];
void add(int x,int y,db z){ ed[++xnt]=Ed(x,y,z); }
db solve(int V,int E)
{
db ret=;
while()
{
for(int i=;i<=V;i++)in[i]=INF,id[i]=vis[i]=;
for(int i=,u,v;i<=E;i++)
{
u=ed[i].x; v=ed[i].y;
if(in[v]>ed[i].w)in[v]=ed[i].w, pre[v]=u;
}
for(int i=;i<=V;i++)
{ if(in[i]==INF)return -; ret+=in[i];}
int cnt=;
for(int i=;i<=V;i++)
{
vis[i]=i; int cr=pre[i];
while(cr&&!vis[cr]) vis[cr]=i, cr=pre[cr];
if(vis[cr]==i)
{
id[cr]=++cnt; cr=pre[cr];
while(!id[cr])id[cr]=cnt, cr=pre[cr];
}
}
if(!cnt)return ret;
for(int i=;i<=V;i++)if(!id[i])id[i]=++cnt;
V=cnt; int tE=E; E=;
for(int i=,u,v;i<=tE;i++)
{
u=ed[i].x; v=ed[i].y;
if(id[u]==id[v])continue;
ed[++E].x=id[u]; ed[E].y=id[v];//id[]
ed[E].w=ed[i].w-in[v];
}
}
}
}
int main()
{
int tn;scanf("%d",&tn);
for(int i=;i<=tn;i++)
{
scanf("%lf%d",&a[i],&b[i]);
if(!b[i]){ ok[i]=;continue;}
DMST::id[i]=++n; DMST::add(,DMST::id[i],a[i]);
}
int m; db d; scanf("%d",&m);
for(int i=,u,v;i<=m;i++)
{
scanf("%d%d%lf",&u,&v,&d);
if(ok[u]||ok[v])continue;
DMST::add(DMST::id[u],DMST::id[v],d);
a[v]=min(a[v],d);
}
db ans=DMST::solve(n,DMST::xnt);
for(int i=;i<=tn;i++)//tn
if(!ok[i])ans+=(b[i]-)*a[i];
printf("%.2f\n",ans);
return ;
}
bzoj 4349 最小树形图——朱刘算法的更多相关文章
- 最小树形图——朱刘算法(Edmonds)
定义:一个有向图,存在从某个点为根的,可以到达所有点的一个最小生成树,则它就是最小树形图. 朱刘算法实现过程: [在选出入边集后(看步骤1),若有向图中不存在有向环,说明该图就是最小树形图] 1,选入 ...
- POJ 3164 Command Network ( 最小树形图 朱刘算法)
题目链接 Description After a long lasting war on words, a war on arms finally breaks out between littlek ...
- poj3164(最小树形图&朱刘算法模板)
题目链接:http://poj.org/problem?id=3164 题意:第一行为n, m,接下来n行为n个点的二维坐标, 再接下来m行每行输入两个数u, v,表点u到点v是单向可达的,求这个有向 ...
- POJ 3164 Command Network 最小树形图 朱刘算法
=============== 分割线之下摘自Sasuke_SCUT的blog============= 最 小树形图,就是给有向带权图中指定一个特殊的点root,求一棵以root为根的有向生成树T, ...
- 最小树形图--朱刘算法([JSOI2008]小店购物)
题面 luogu Sol 首先设一个 \(0\) 号点,向所有点连边,表示初始价值 显然这个图的一个 \(0\) 为根的最小有向生成树的边权和就是每个买一次的最小价值 再买就一定能优惠(包含 \(0\ ...
- 洛谷P4716 【模板】最小树形图(朱刘算法)
题意 题目链接 Sol 朱刘算法?感觉又是一种神仙贪心算法 大概就是每次贪心的用每个点边权最小的入边更新答案,如果不行的话就缩起来找其他的边 不详细说了,丢链接走人.. #include<bit ...
- POJ - 3164-Command Network 最小树形图——朱刘算法
POJ - 3164 题意: 一个有向图,存在从某个点为根的,可以到达所有点的一个最小生成树,则它就是最小树形图. 题目就是求这个最小的树形图. 参考资料:https://blog.csdn.net/ ...
- 【刷题】BZOJ 4349 最小树形图
Description 小C现在正要攻打科学馆腹地------计算机第三机房.而信息组的同学们已经建好了一座座堡垒,准备迎战.小C作为一种高度智慧的可怕生物,早已对同学们的信息了如指掌. 攻打每一个人 ...
- poj 3164 Command Network (朱刘算法)
题目链接: http://poj.org/problem?id=3164 题目大意: 有n个点(用坐标表示)各点编号分别为1—>n,m条单向路,问能否存在一个花费价值最小的网络,能使从1点到达任 ...
随机推荐
- MySQL:用户管理
用户管理部分 一.数据库不安全因素 非授权用户对数据库的恶意存取和破坏: 数据库中重要或敏感的数据被泄露: 安全环境的脆弱性: 二.数据库安全的常用方法 用户标识和鉴别[使用口令鉴别]::该方法由系统 ...
- js 自执行匿名函数(转载)
自执行匿名函数: 常见格式:(function() { /* code */ })(); 解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命 ...
- __autolaod
转载自:https://blog.csdn.net/baidu_30000217/article/details/52743139 php实现类文件自动载入有两种办法: 魔术方法:__autoload ...
- 分析无线遥控器信号并制作Hack硬件进行攻击
无线遥控器(无线电遥控器)在我们生活中非常常见,应用于各种场景,方便着用户的使用.不过大多数还是用于安防方面的,比如: 遥控报警器.电动卷帘门.电动伸缩门.遥控电开关.无线遥控门铃…… 1.无线遥控器 ...
- python cookies提取——从字符串到字典(一行Python代码)
def extract_cookies(cookie): """从浏览器或者request headers中拿到cookie字符串,提取为字典格式的cookies&quo ...
- python第一天 计算机基础
计算机硬件组成 控制器: 运算器 存储器I/O设备 与运行程序有关的三大核心硬件 cpu,内存,硬盘 运行软件时,硬件的运作流程 1.软件最先存放于硬盘当中,软件的代码运行时会由硬盘读入内存 2.cp ...
- POWER BI报表服务器混合云初了解
Power BI报表服务器 购买Power BI Premium时,你可以获取2个产品,一个是Power BI Service另外一个是Power BI Report Server. Power BI ...
- VS2017调试代码显示“当前无法命中断点,还没有为该文档加载任何符号”
VS2017升级之后,代码调试无法进入,显示“当前无法命中断点,还没有为该文档加载任何符号”的问题解决思路: 1.工具-选项-项目和解决方案-生成并运行,取消勾选“在运行时仅生成启动项目和依赖性” 2 ...
- 微信小程序--地图上添加图片
如何在微信小程序地图添加上,添加图片? 在微信小程序中,地图的层级最高,所以我们没有办法,通过定位,在地图上添加图片等信息; 处理办法: 添加控件:controls; 其中有个属性position,进 ...
- [LeetCode&Python] Problem 771: Jewels and Stones
You're given strings J representing the types of stones that are jewels, and S representing the ston ...