题意:
      给你n个城市,m条边,要有h个必须旅游和打工的城市,问你能不能从1把所有必须的h个城市全部旅游并且打工完...

思路:

      先一遍floyd跑出全局最短路,然后暴力枚举出打工的顺序,当打工的个数达到h的时候判断下是否能从第h个打工的点用当前剩余的前回到1如果能就ok..


#include<stdio.h>
#include<string.h>#define inf 1000000000

int map[100+50][100+50];
int H[20] ,C[20] ,D[20];
int HH[20];int minn(int a ,int b)
{return a < b ? a : b;
}void floyd(int n)
{for(int k = 1 ;k <= n ;k ++)for(int i = 1 ;i <= n ;i ++)for(int j = 1 ;j <= n ;j ++)map[i][j] = minn(map[i][k] + map[k][j] ,map[i][j]);
}int mark[20] ,ok ,H_n;void DFS(int s ,int mony ,int sum)
{if(sum == H_n && mony >= map[s][1]){ok = 1;return;}for(int i = 1 ;i <= H_n ;i ++){if(mark[i]) continue;if(mony < map[s][H[i]]) continue;if(mony  - map[s][H[i]] >= D[i] && !ok){mark[i] = 1;DFS(H[i] ,mony - map[s][H[i]] - D[i] + C[i] ,sum + 1);mark[i] = 0;}}
}int main ()
{int i ,j ,m ,n ,mon ,t ,a ,b ,c;scanf("%d" ,&t);while(t--){scanf("%d %d %d" ,&n ,&m ,&mon);for(i = 1 ;i <= n ;i ++){for(j = 1 ;j <= n ;j ++)map[i][j] = inf;map[i][i] = 0;}for(i = 1 ;i <= m ;i ++){scanf("%d %d %d" ,&a ,&b ,&c);map[a][b] = map[b][a] = minn(c ,map[a][b]);}floyd(n);scanf("%d" ,&H_n);memset(mark ,0 ,sizeof(mark));for(i = 1 ;i <= H_n ;i ++){scanf("%d %d %d" ,&H[i] ,&C[i] ,&D[i]);}ok = 0; DFS(1 ,mon ,0);if(ok) printf("YES\n");else printf("NO\n");}return 0;
}

hdu4284 dfs+floyd相关推荐

  1. LeetCode 【算法专栏】 【图】

    图相关算法 有关BFS和DFS 求有权图的单源最短路径算法(Dijkstra算法) 求有权图的多源最短路径算法(Floyd算法) 最小生成树-Prim算法 leetcode 1584 连接所有点的最小 ...

  2. 惹某第8周周记(习题+感悟)

    我是个没有感情的WA题机 (一)最短路 A - 最短路 题目描述 Input Output Sample Input Sample Output 理解 AC代码 DFS Floyd Bellmanfo ...

  3. jzoj3290. 【JSOI2013】吃货JYY

    题目描述 Description 世界上一共有N个JYY愿意去的城市,分别从1编号到N.JYY选出了K个他一定要乘坐的航班.除此之外,还有M个JYY没有特别的偏好,可以乘坐也可以不乘坐的航班. 一个航 ...

  4. dijkstra算法_Python实现图的经典DFS、BFS、Dijkstra、Floyd、Prim、Kruskal算法

    讲在前面的话,图的算法太多,理论知识肯定一篇文章讲不完,关于理论知识大家可以参考教材Sedgewick的<算法>或reference的链接,本文主要还是想在一篇文章中记录六种算法的Pyth ...

  5. POJ1683 Puzzlestan ——Floyd传递闭包+Dfs

    好久没写Dfs了,拿来练手. WA了一次,没有判断中间的情况-- 解法:先用Floyd传递闭包处理哪些点一定要在一起.哪些点一定不能在一起,六重循环. 然后深搜,res[i][j]表示1,i这个物品在 ...

  6. dfs时间复杂度_Python实现图的经典DFS、BFS、Dijkstra、Floyd、Prim、Kruskal算法

    讲在前面的话,图的算法太多,理论知识肯定一篇文章讲不完,关于理论知识大家可以参考教材Sedgewick的<算法>或reference的链接,本文主要还是想在一篇文章中记录六种算法的Pyth ...

  7. 图论板子dijkstra,Floyd,prime,bfs,dfs, krustral

    #include<bits/stdc++.h> using namespace std; void bfs(){for(int i=1;i<=n;i++)v[i]=0;queue&l ...

  8. 03 优先搜索(dfs bfs)、最小生成树(笛卡尔 prime)、两点最短路径(迪杰斯特拉 Floyd)

    #include<bits/stdc++.h> using namespace std; void bfs(){for(int i=1;i<=n;i++)v[i]=0;queue&l ...

  9. BZOJ1491: [NOI2007]社交网络(Floyd 最短路计数)

    Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 2343  Solved: 1266 [Submit][Status][Discuss] Descrip ...

最新文章

  1. 最新!2021 中国内地大学 ESI 排名出炉
  2. IOS设计模式第六篇之适配器设计模式
  3. CV:Win10下深度学习框架安装之Tensorflow/tensorflow_gpu+Cuda+Cudnn(最清楚/最快捷)之详细攻略(图文教程)
  4. socket发送请求,协程
  5. osg着色语言着色_探索数字着色
  6. ActiveMQ反序列化漏洞(CVE-2015-5254)复现
  7. webstorm最新版破解教程及汉化教程(也是看别人的)
  8. 达摩院成立XG实验室!阿里官宣进军5G
  9. 解决NSTimer循环引用
  10. 设计一个服务器资源管理系统,基于虚拟化技术的服务器资源管理系统的设计与实现.pdf...
  11. vue 秒转换为时分秒_Vue源码全面解析二十九 parse函数(转换html模板为AST语法结构)...
  12. 重装系统时,USB接口鼠标和键盘不能使用的解决办法
  13. 智能建造如何转型升级?智慧工地引领建筑行业智能化信息化发展
  14. 共享经济突围路在何方 ?共享洗衣机能否突围?
  15. java 随机姓名_随机组合生成好听的名字(java)
  16. HTML5Canvas实现简易画图工具(铅笔,直线,矩形,圆,文本框,橡皮擦等)
  17. Git查看本机 ssh 公钥或生成公钥
  18. 网易跨域实现笔记以及顺便发现的XSS
  19. CNN2019.11.22
  20. 2023哈尔滨工程大学计算机考研信息汇总

热门文章

  1. 运维:windows+python+route的一次相遇
  2. JAVA Builder模式构建MAP/LIST的示例
  3. java基础知识总结,绝对经典
  4. 匿名对象和object的转换
  5. ZJU PAT 1027 Colors in Mars
  6. [Linux]lnmp一键安装包,访问yii/tp5/laravel的时候,报错500或者空白页面
  7. jsp(3,6,9) EL表达式及JSTL
  8. mysql 事务处理
  9. 应该了解的Openstack命令
  10. Win32汇编_基础