博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最小权路径集问题 解题题报告
阅读量:5122 次
发布时间:2019-06-13

本文共 1217 字,大约阅读时间需要 4 分钟。

自闭了,sb斯坦纳树题没看出来,以此纪念..

\(dp_{s,i}\)表示点\(i\)联通关键点集合\(s\)的最小代价,转移显然。

\[ dp_{S,i}=\min_{Q+T=S}dp_{Q,i}+dp_{T,i}\\ dp_{S,i}=\min_{E(i,j)\in G}dp_{S,j}+\mathtt {edge_{i,j}} \]
\(S\)分层,每层跑最短路即可。

最后再拿个dp合并斯坦纳森林


Code:

#include 
#include
#include
#include
#include
using std::max;const int SIZE=1<<21;char ibuf[SIZE],*iS,*iT;//#define gc() (iS==iT?(iT=(iS=ibuf)+fread(ibuf,1,SIZE,stdin),iS==iT?EOF:*iS++):*iS++)#define gc() getchar()template
void read(T &x){ int f=0;x=0;char c=gc(); while(!isdigit(c)) f|=c=='-',c=gc(); while(isdigit(c)) x=x*10+c-'0',c=gc(); if(f) x=-x;}void ckmin(int &x,int y){x=x
q;void spfa(int s){ while(!q.empty()) { int now=q.front(); q.pop(); for(int i=head[now];i;i=Next[i]) { int v=to[i],w=edge[i]; if(dp[s][v]>dp[s][now]+w) { dp[s][v]=dp[s][now]+w; q.push(v); } } }}int main(){ read(n),read(m),read(k); for(int u,v,w,i=1;i<=m;i++) { read(u),read(v),read(w); add(u,v,w),add(v,u,w); } memset(dp,0x3f,sizeof dp); for(int i=1;i<=n;i++) { if(i<=k) dp[1<
>=1; for(int s=1;s<1<
>i&1) it|=1<<(i<<1),it|=1<<(i<<1|1); ckmin(aya[s],aya[s^t]+dp[it][0]); } } if(aya[(1<

2019.5.23

转载于:https://www.cnblogs.com/butterflydew/p/10911603.html

你可能感兴趣的文章
VALSE2019总结(4)-主题报告
查看>>
浅谈 unix, linux, ios, android 区别和联系
查看>>
51nod 1428 活动安排问题 (贪心+优先队列)
查看>>
中国烧鹅系列:利用烧鹅自动执行SD卡上的自定义程序(含视频)
查看>>
Solaris11修改主机名
查看>>
latex for wordpress(一)
查看>>
如何在maven工程中加载oracle驱动
查看>>
Flask 系列之 SQLAlchemy
查看>>
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
python常用函数
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
【工具相关】iOS-Reveal的使用
查看>>
数据库3
查看>>
存储分类
查看>>
下一代操作系统与软件
查看>>
【iOS越狱开发】如何将应用打包成.ipa文件
查看>>