注意到H (H <= 15)   所以 可以 选择 状压+dp

但是 直接用搜索也可以过。经典的TSP问题。

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int Map[150][150];
const int INF=1<<29;struct node
{int v;int get,pay;
}s[20];
int n,m,money;
int vis[150];
int h;void floyd()
{int i,j,k;for(k=1;k<=n;k++)for(i=1;i<=n;i++)for(j=1;j<=n;j++){if(i==j||i==k||j==k) continue;Map[i][j]=min(Map[i][j],Map[i][k]+Map[k][j]);}
}int dfs(int u,int leave,int number)
{int i;if(number==h){if(leave>=Map[u][1]) return 1;return 0;}for(i=0;i<h;i++){if(vis[s[i].v]==0){if(Map[u][s[i].v]<INF&&leave>=Map[u][s[i].v]+s[i].pay){vis[s[i].v]=1;if(dfs(s[i].v,leave-Map[u][s[i].v]-s[i].pay+s[i].get,number+1)) return 1;vis[s[i].v]=0;}}}return 0;
}int main()
{int t,i,j;scanf("%d",&t);while(t--){memset(vis,0,sizeof(vis));scanf("%d%d%d",&n,&m,&money);//memset(Map,0,sizeof(Map));for(i=1;i<=n;i++){for(j=1;j<=n;j++)Map[i][j]=INF;Map[i][i]=0;}for(i=0;i<m;i++) {int a,b,c;scanf("%d%d%d",&a,&b,&c);Map[b][a]=min(Map[b][a],c);Map[a][b]=Map[b][a];}scanf("%d",&h);int total=0;for(i=0;i<h;i++){scanf("%d%d%d",&s[i].v,&s[i].get,&s[i].pay);}floyd();if(dfs(1,money,total)) printf("YES\n");else printf("NO\n");}
}

hdu 4284 floyd+暴搜相关推荐

  1. HDU - 6185 Covering(暴搜+递推+矩阵快速幂/杜教BM)

    题目链接:点击查看 题目大意:规定宽度为4,给定长度为n,求用1*2和2*1的瓷砖,将其完全铺满能有多少种方法. 分析:自从学会了矩阵快速幂之后,看到1e18的数据量都会下意识的往递推上面想,但是以前 ...

  2. hdu4848 DFS 暴搜+ 强剪枝

    题意:       给你一个图,然后问你从1出发遍历所有的点的距离和是多少,这里的距离和是每一个点到1的距离的总和,不是选择一条遍历所有点的路径的总长度,时间限制是 8000ms. 思路:       ...

  3. PTA 家庭房产 (图论,暴搜)

    PTA 家庭房产 (图论,暴搜) 题目详情: 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(≤1000),随后N ...

  4. 紫书 习题7-14 UVa 307(暴搜+剪枝)

    这道题一开始我想的是在排序之后只在头和尾往中间靠近来找木块, 然后就WA, 事实证明这种方法是错误的. 然后参考了别人的博客.发现别人是直接暴搜, 但是加了很多剪枝, 所以不会超时. 我也想过这个做法 ...

  5. 子矩阵(暴搜(全排列)+DP)

    子矩阵(暴搜(全排列)+DP) 一.题目 子矩阵 时间限制: 1 Sec  内存限制: 128 MB 提交: 1  解决: 1 [提交][状态][讨论版] 题目描述 给出如下定义: 1. 子矩阵:从一 ...

  6. hdu4982 暴搜+剪枝(k个数和是n,k-1个数的和是平方数)

    题意:       给你两个数n,k问你是否怎在这样一个序列:      (1)这个序列有k个正整数,且不重复.      (2)这k个数的和是n.      (3)其中有k-1个数的和是一个平方数. ...

  7. 算法提高课-图论-单源最短路的综合应用-AcWing 1135. 新年好:dijkstra和dfs暴搜结合

    题目分析 来源:acwing 分析: 先预处理出从1,a,b,c,d,e出发到其他所有点的单源最短路.存在二维数组dist[6][N]中 dfs暴搜所有拜访顺序,共有5!种,对于每一种拜访顺序,可以通 ...

  8. PAT甲级1119 Pre- and Post-order Traversals (30分):[C++题解]暴搜dfs、前序遍历和后序遍历求中序遍历

    文章目录 题目分析 题目链接 题目分析 分析 给了前序遍历和后序遍历,能够确定根结点,但是左子树和右子树的长度是不确定的.这里采用的解决方案是枚举左子树的结点个数,其实右子树的结点个数也确定了.对于每 ...

  9. Leetcode5635. 构建字典序最大的可行序列[C++题解]:dfs暴搜

    文章目录 题目 题目链接 题目 题目重述:给定一个数n,求一个长度为2n-1的序列:1只出现一次,2~n之间每个数出现2次,并且 对于2 ~n之间的每个数i,两个i之间相差为i,比如n=3,[3,1, ...

最新文章

  1. 知识点033-利用expect和shell分发密钥之后用ansible统计哪些没有分发成功
  2. Java二进制位运算、移位运算、、
  3. 图像白化MATLAB代码实现
  4. Scala 方法参数列表是val 不可修改
  5. java setcontenttype_response.setContentType()在Java过滤器中重置
  6. linux内核测试,Linux内核测试的生命周期
  7. 【干货】和你谈谈数据分析报告
  8. [BZOJ3676][Apio2014]回文串
  9. apache2配置优化以及性能测试小结
  10. 第8-9讲 视觉里程计2
  11. mysql子查询sysdate_MySQL T6 数据库操作——查询(三)高级查询
  12. 20届校招-携程笔试题-表达式解析
  13. word树状分支图_带你看懂市政管道工程图
  14. STM32 SPI 读取12位RM08 SSI 编码器信号
  15. 主机不可达和端口不可达
  16. 摄影测量(一):概述
  17. 当我按下电源按钮的瞬间,电脑都干了些什么
  18. Vue+Springboot项目练手(主要是后端)
  19. 电脑如何截长图?如何用电脑截取长图——规划全景
  20. Hexo自动部署到阿里云(Ubantu16.04)【超详细踩坑记录】

热门文章

  1. Java多线程知识小抄集(三)
  2. 音视频技术开发周刊 | 206
  3. FLV文件中VideoPacket的详解
  4. 存储类型auto,static,extern,register的区别
  5. windows平台python安装SciPy
  6. android jni通过cmake使用第三方静态库和动态库
  7. df -h 显示100%的解决办法
  8. Spark没有读取HDFS文件的方法?那textFile是怎么读的?
  9. 为什么MySQL索引要使用 B+树,而不是其它树形结构?
  10. leetcode 698. Partition to K Equal Sum Subsets | 698. 划分为k个相等的子集(回溯法)