题目描述

题解:

由于$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]管道连接相关推荐

  1. [bzoj4006][JLOI2015]管道连接_斯坦纳树_状压dp

    管道连接 bzoj-4006 JLOI-2015 题目大意:给定一张$n$个节点$m$条边的带边权无向图.并且给定$p$个重要节点,每个重要节点都有一个颜色.求一个边权和最小的边集使得颜色相同的重要节 ...

  2. bzoj4006: [JLOI2015]管道连接

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4006 思路: 一眼看上去很像斯坦纳树 但是限制稍有不同,只要每种颜色的点联通即可 也就是说最 ...

  3. [JLOI2015]管道连接(斯坦纳树)

    [Luogu3264] 原题解 多个频道,每个频道的关键点要求相互联通 详见代码,非常巧妙 #include<cstdio> #include<iostream> #inclu ...

  4. BZOJ 4006 Luogu P3264 [JLOI2015]管道连接 (斯坦纳树、状压DP)

    题目链接: (bzoj)https://www.lydsy.com/JudgeOnline/problem.php?id=4006 (luogu)https://www.luogu.org/probl ...

  5. 解决:未能将管道连接到虚拟机: 所有的管道范例都在使用中。

    虚拟机无端出现: VMware Workstation 无法连接到虚拟机.请确保您有权限运行该程序.访问改程序使用的所有目录以及访问所有临时文件目录.未能将管道连接到虚拟机: 所有的管道范例都在使用中 ...

  6. 未能将管道连接到虚拟机: 所有的管道范例都在使用中

    强行关闭虚拟机会经常出现: VMware Workstation 无法连接到虚拟机.请确保您有权限运行该程序.访问改程序使用的所有目录以及访问所有临时文件目录.未能将管道连接到虚拟机: 所有的管道范例 ...

  7. VMware解决:未能将管道连接到虚拟机: 所有的管道范例都在使用中。

    VMware Workstation 无法连接到虚拟机 请确保您有权运行该程序 访问该程序使用的所有目录以及访问所有临时文件目录. 未能将管道连接到虚拟机: 所有的管道范例都在使用中. 由于上一次使用 ...

  8. VMware Workstation 无法连接到虚拟机。请确保您有权限运行该程序、访问改程序使用的所有目录以及访问所有临时文件目录。未能将管道连接到虚拟机: 所有的管道范例都在使用中。

    现象: 虚拟机无端出现,VMware Workstation 无法连接到虚拟机.请确保您有权限运行该程序.访问改程序使用的所有目录以及访问所有临时文件目录.未能将管道连接到虚拟机: 所有的管道范例都在 ...

  9. 虚拟机无端出现 未能将管道连接到虚拟机: 所有的管道范例都在使用中

    情景 VMware 卡住了.用任务管理器 强行结束了VMware 再次打开镜像的时候发生 虚拟机无端出现,VMware Workstation 无法连接到虚拟机.请确保您有权限运行该程序.访问改程序使 ...

  10. DM7全库备份失败报错“管道连接超时”处理流程

    对DM7做全量备份,备份名为dmdb1.bak,通过命令和管理用具均备份失败 (1)通过命令进行全量备份 输入: backup database full backupset '/dm7/backup ...

最新文章

  1. java 操作 redis_java操作Redis
  2. 总结接口与类和抽象类的关系
  3. Machine Vision 浅谈
  4. Core Animation放大缩小;CAKeyframeAnimation
  5. cdn对加速效果明显吗
  6. 从简历筛选看怎么写一篇有亮点的简历
  7. 68)deque数组
  8. 全国计算机一级选择题汇总,全国计算机一级考试选择题训练及答案
  9. XmlReader 内部使用NameTable
  10. oracle exp空数据表,Oracle11g中Exp空表的问题
  11. 使用 SoundSource 取代Mac系统内置的音量控制器
  12. java update 卸载不了_javaupdate可以卸载吗
  13. 三维浮雕软件 linux,三维立体浮雕软件下载
  14. 制作3D游戏时如何避免或减轻玩家的晕3D现象?
  15. Android 系统截屏实现
  16. Juniper SRX NAT46/NAT64配置
  17. Java多线程 -- 深入理解JMM(Java内存模型) --(五)锁
  18. 知网下载的PDF论文,如何加目录的方法
  19. Unity PC 打包后文件夹
  20. 一般人不清楚的JavaScript概念

热门文章

  1. malloc分配的内存空间是连续的吗
  2. 在ASP.NET 2.0中操作数据:使用FormView 的模板
  3. 【高校联合主办| SCI、EI 快检索】物联网,机器学习,网络安全,通信技术,算法,微芯片等计算机多主题征稿!...
  4. 腾讯自然语言处理实习面经
  5. 深度学习需要掌握的 13 个概率分布
  6. 【GNN】一份简短入门《图神经网络GNN》笔记小册
  7. NLP硬核入门-隐马尔科夫模型HMM
  8. 【每日算法Day 99】你们可能不知道只用20万赢到578万是什么概念
  9. 【每日算法Day 97】经典面试题:求两个数组最小差
  10. 每日算法系列【LeetCode 1186】删除一次得到子数组最大和