bzoj4006 [JLOI2015]管道连接
题目描述
题解:
由于$p<=10$,我们可以暴力枚举覆盖频道状态为$s$的特殊点,每次跑一遍斯坦纳树,
最后合并,方程和斯坦纳树的状态合并方程几乎一样。
代码:
#include<queue> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define N 1050 #define M 3050 #define ll long long const ll Inf = 0x3f3f3f3f3f3f3f3fll; inline int rd() {int f=1,c=0;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){c=10*c+ch-'0';ch=getchar();}return f*c; } int n,m,p,q,hed[N],cnt; struct EG {int to,nxt,w; }e[2*M]; void ae(int f,int t,int w) {e[++cnt].to = t;e[cnt].nxt = hed[f];e[cnt].w = w;hed[f] = cnt; } int ve[12][12],ct[12]; ll tmp[N][1<<10],g[1<<10]; bool vis[N]; queue<int>que; void spfa(int s) {while(!que.empty()){int u = que.front();que.pop();for(int j=hed[u];j;j=e[j].nxt){int to = e[j].to;if(tmp[to][s]>tmp[u][s]+e[j].w){tmp[to][s]=tmp[u][s]+e[j].w;if(!vis[to])vis[to]=1,que.push(to);}}vis[u]=0;} } void sol(int k) {memset(tmp,0x3f,sizeof(tmp));int now = 0;for(int i=0;i<q;i++)if(k&(1<<i))for(int j=0;j<ct[i+1];j++)tmp[ve[i+1][j]][1<<now]=0,now++;for(int s=1;s<(1<<now);s++){for(int i=1;i<=n;i++){for(int t=s&(s-1);t;t=s&(t-1)){tmp[i][s]=min(tmp[i][s],tmp[i][t]+tmp[i][s^t]);}if(tmp[i][s]!=Inf)que.push(i),vis[i]=1;}spfa(s);}for(int i=1;i<=n;i++)if(tmp[i][(1<<now)-1]<g[k])g[k]=tmp[i][(1<<now)-1]; } int main() {n = rd(),m = rd(),p = rd();for(int f,t,w,i=1;i<=m;i++){f=rd(),t=rd(),w=rd();ae(f,t,w),ae(t,f,w);}for(int f,t,i=1;i<=p;i++){f=rd(),t=rd();ve[f][ct[f]]=t;q+=(!ct[f]);ct[f]++;}memset(g,0x3f,sizeof(g));for(int s=1;s<(1<<q);s++){sol(s);for(int t=s&(s-1);t;t=s&(t-1))g[s]=min(g[s],g[t]+g[s^t]);}printf("%lld\n",g[(1<<q)-1]);return 0; }
转载于:https://www.cnblogs.com/LiGuanlin1124/p/10206810.html
bzoj4006 [JLOI2015]管道连接相关推荐
- [bzoj4006][JLOI2015]管道连接_斯坦纳树_状压dp
管道连接 bzoj-4006 JLOI-2015 题目大意:给定一张$n$个节点$m$条边的带边权无向图.并且给定$p$个重要节点,每个重要节点都有一个颜色.求一个边权和最小的边集使得颜色相同的重要节 ...
- bzoj4006: [JLOI2015]管道连接
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4006 思路: 一眼看上去很像斯坦纳树 但是限制稍有不同,只要每种颜色的点联通即可 也就是说最 ...
- [JLOI2015]管道连接(斯坦纳树)
[Luogu3264] 原题解 多个频道,每个频道的关键点要求相互联通 详见代码,非常巧妙 #include<cstdio> #include<iostream> #inclu ...
- BZOJ 4006 Luogu P3264 [JLOI2015]管道连接 (斯坦纳树、状压DP)
题目链接: (bzoj)https://www.lydsy.com/JudgeOnline/problem.php?id=4006 (luogu)https://www.luogu.org/probl ...
- 解决:未能将管道连接到虚拟机: 所有的管道范例都在使用中。
虚拟机无端出现: VMware Workstation 无法连接到虚拟机.请确保您有权限运行该程序.访问改程序使用的所有目录以及访问所有临时文件目录.未能将管道连接到虚拟机: 所有的管道范例都在使用中 ...
- 未能将管道连接到虚拟机: 所有的管道范例都在使用中
强行关闭虚拟机会经常出现: VMware Workstation 无法连接到虚拟机.请确保您有权限运行该程序.访问改程序使用的所有目录以及访问所有临时文件目录.未能将管道连接到虚拟机: 所有的管道范例 ...
- VMware解决:未能将管道连接到虚拟机: 所有的管道范例都在使用中。
VMware Workstation 无法连接到虚拟机 请确保您有权运行该程序 访问该程序使用的所有目录以及访问所有临时文件目录. 未能将管道连接到虚拟机: 所有的管道范例都在使用中. 由于上一次使用 ...
- VMware Workstation 无法连接到虚拟机。请确保您有权限运行该程序、访问改程序使用的所有目录以及访问所有临时文件目录。未能将管道连接到虚拟机: 所有的管道范例都在使用中。
现象: 虚拟机无端出现,VMware Workstation 无法连接到虚拟机.请确保您有权限运行该程序.访问改程序使用的所有目录以及访问所有临时文件目录.未能将管道连接到虚拟机: 所有的管道范例都在 ...
- 虚拟机无端出现 未能将管道连接到虚拟机: 所有的管道范例都在使用中
情景 VMware 卡住了.用任务管理器 强行结束了VMware 再次打开镜像的时候发生 虚拟机无端出现,VMware Workstation 无法连接到虚拟机.请确保您有权限运行该程序.访问改程序使 ...
- DM7全库备份失败报错“管道连接超时”处理流程
对DM7做全量备份,备份名为dmdb1.bak,通过命令和管理用具均备份失败 (1)通过命令进行全量备份 输入: backup database full backupset '/dm7/backup ...
最新文章
- java 操作 redis_java操作Redis
- 总结接口与类和抽象类的关系
- Machine Vision 浅谈
- Core Animation放大缩小;CAKeyframeAnimation
- cdn对加速效果明显吗
- 从简历筛选看怎么写一篇有亮点的简历
- 68)deque数组
- 全国计算机一级选择题汇总,全国计算机一级考试选择题训练及答案
- XmlReader 内部使用NameTable
- oracle exp空数据表,Oracle11g中Exp空表的问题
- 使用 SoundSource 取代Mac系统内置的音量控制器
- java update 卸载不了_javaupdate可以卸载吗
- 三维浮雕软件 linux,三维立体浮雕软件下载
- 制作3D游戏时如何避免或减轻玩家的晕3D现象?
- Android 系统截屏实现
- Juniper SRX NAT46/NAT64配置
- Java多线程 -- 深入理解JMM(Java内存模型) --(五)锁
- 知网下载的PDF论文,如何加目录的方法
- Unity PC 打包后文件夹
- 一般人不清楚的JavaScript概念
热门文章
- malloc分配的内存空间是连续的吗
- 在ASP.NET 2.0中操作数据:使用FormView 的模板
- 【高校联合主办| SCI、EI 快检索】物联网,机器学习,网络安全,通信技术,算法,微芯片等计算机多主题征稿!...
- 腾讯自然语言处理实习面经
- 深度学习需要掌握的 13 个概率分布
- 【GNN】一份简短入门《图神经网络GNN》笔记小册
- NLP硬核入门-隐马尔科夫模型HMM
- 【每日算法Day 99】你们可能不知道只用20万赢到578万是什么概念
- 【每日算法Day 97】经典面试题:求两个数组最小差
- 每日算法系列【LeetCode 1186】删除一次得到子数组最大和