牛客网 小白月赛4 D-郊区春游 最短路+状压dp
链接: https://www.nowcoder.com/acm/contest/134/D来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
输入描述:
第一行三个整数n, m, R(2 ≤ n ≤ 200, 1 ≤ m ≤ 5000, 2 ≤ R ≤ min(n, 15))。 第二行R个整数表示需要去玩耍的郊区编号。 以下m行每行Ai, Bi, Ci(1 ≤ Ai, Bi ≤ n, Ai ≠ Bi, Ci ≤ 10000) 保证不存在重边。
输出描述:
输出一行表示最小的花费
输入
4 6 3 2 3 4 1 2 4 2 3 3 4 3 1 1 4 1 4 2 2 3 1 6
输出
3
思路:先用floyed预处理距离,设一个数组dp[i][j](i为状态,j为当前所在的目标城市),通过状压dp即可解决。
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
using namespace std;
#define inf 0x3f3f3f3f
int n,m,R;
int dist[210][210];
int r[16];
int dp[41000][16];//dp[i][j],i为当前路径状态,j为当前所在的目标城市
int main()
{memset(dist,inf,sizeof(dist));memset(dp,inf,sizeof(dp));scanf("%d%d%d",&n,&m,&R);int x,y,w;for(int i=0;i<R;++i)scanf("%d",&r[i]);for(int i=1;i<=m;++i){scanf("%d%d%d",&x,&y,&w);dist[x][y]=dist[y][x]=w;}for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)for(int k=1;k<=n;++k){if(i==j||j==k||k==i)continue ;dist[j][k]=min(dist[j][k],dist[j][i]+dist[i][k]);}for(int i=0;i<R;++i)dp[1<<i][i]=0;for(int i=1;i<(1<<R);++i)for(int j=0;j<R;++j){if(!(i&(1<<j)))continue ;x=r[j];for(int k=0;k<R;++k){if(i&(1<<k))continue ;y=r[k];dp[i+(1<<k)][k]=min(dp[i+(1<<k)][k],dp[i][j]+dist[x][y]);}}int minx=inf;for(int i=0;i<R;++i)minx=min(minx,dp[(1<<R)-1][i]);printf("%d\n",minx);
}
牛客网 小白月赛4 D-郊区春游 最短路+状压dp相关推荐
- 牛客网小白月赛5 H-最大公约数(lcm)
链接:https://www.nowcoder.com/acm/contest/135/H 来源:牛客网 题目描述 给定两个正整数a,b,求a,b的最小公倍数.(即[a,b]) 输入描述: 两个整整数 ...
- 牛客网小白月赛12(华华听月月唱歌)
链接:https://ac.nowcoder.com/acm/contest/392/A 来源:牛客网 题目描述 月月唱歌超级好听的说!华华听说月月在某个网站发布了自己唱的歌曲,于是把完整的歌曲下载到 ...
- 牛客网小白月赛6D 字符串丝带
链接:https://www.nowcoder.com/acm/contest/136/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 65536K,其他语言1310 ...
- 牛客网——小白月赛13 —— A题
链接:https://ac.nowcoder.com/acm/contest/549/A 来源:牛客网 题目描述 这是一道签到题,主要考验比赛时的手速. 接下来是一段很简单的代码,或许你提交它就可以A ...
- 牛客网小白月赛 10 A B C
小白月赛越来越不小白了,也可能是我越来越菜了 a题 Actci偶然发现了一个矿洞,这个矿洞的结构类似与一棵二叉树,Actci发现的矿洞恰好位于根节点处,为了尽快挖掘,Actci找来了她的小伙伴们来帮忙 ...
- 2018年,牛客网小白月赛5
第一次啊,补题,希望大佬批评. 题目按我补题顺序来的. https://www.nowcoder.com/acm/contest/135#question H 题 最大公倍数 题意:给出两个数,求最 ...
- 牛客网 小白月赛6
地址链接:点我 A 鲲 分作弊的情况和不作弊的情况 #include <cstdio> #include <cmath>int main() {double L, k, a, ...
- 牛客小白月赛4 D.郊区春游
牛客小白月赛4 D.郊区春游 题目链接 题目描述 今天春天铁子的班上组织了一场春游,在铁子的城市里有 nnn 个郊区和 mmm 条无向道路,第 iii 条道路连接郊区 AiA_iAi 和 BiB_i ...
- 牛客网 小白赛4 A三角形【贪心】
[前驱]:在指定长度的棍子中找到能组成最大周长三角形的三根棍子 链接:https://www.nowcoder.com/acm/contest/134/A 来源:牛客网 题目描述 铁子从森林里收集了n ...
最新文章
- 博士在读却连矩阵的秩都搞不清,我该如何毕业?
- google nexus 5 刷机 卡刷 救砖教程
- linux ajp集群,Linux下apache tomcat ajp_proxy 负载均衡+集群+session 复制
- delphi ui编辑工具源码_一种无侵入比swagger-ui兼容性更好更简单的API文档生成方案
- 二叉树(BST)之创建二叉搜索树
- decode encode
- [Jarvis OJ - PWN]——Tell Me Something
- 算法 --- 顺序查找、二分查找的js实现
- canvas 判断哪个元素被点击_监听 Canvas 内部元素点击事件的三种方法
- 利用matlab做dsp实验,华工DSP实验一利用Matlab进行频谱分析
- Android自定义控件ImageViwe(三)——随手指进行图片的缩放
- 自己学java需要多久_自学 java, 学多久可以自己找到工作?
- 使用oprofile查找性能瓶颈
- 氮化硼纳米片原位负载纳米氧化硅杂化填料|立方氮化硼粉体的表面改性修饰|水溶性六方氮化硼纳米片(BNNS)|茶多酚修饰氮化硼纳米片分散液
- jenkins插件镜像源
- android 取消选中状态,Android:显示/隐藏偏好检查/取消选中其他CheckBoxPreference
- 基于微信小程序的医疗监督反馈小程序的设计与实现-计算机毕业设计源码+LW文档
- 【环境部署】基于FreeSSL生成免费SSL证书
- Jmeter设置之ramp-up
- 基于线性函数近似的安全强化学习 Safe RL with Linear Function Approximation 翻译 2