hdu4284 dfs+floyd
题意:
给你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相关推荐
- LeetCode 【算法专栏】 【图】
图相关算法 有关BFS和DFS 求有权图的单源最短路径算法(Dijkstra算法) 求有权图的多源最短路径算法(Floyd算法) 最小生成树-Prim算法 leetcode 1584 连接所有点的最小 ...
- 惹某第8周周记(习题+感悟)
我是个没有感情的WA题机 (一)最短路 A - 最短路 题目描述 Input Output Sample Input Sample Output 理解 AC代码 DFS Floyd Bellmanfo ...
- jzoj3290. 【JSOI2013】吃货JYY
题目描述 Description 世界上一共有N个JYY愿意去的城市,分别从1编号到N.JYY选出了K个他一定要乘坐的航班.除此之外,还有M个JYY没有特别的偏好,可以乘坐也可以不乘坐的航班. 一个航 ...
- dijkstra算法_Python实现图的经典DFS、BFS、Dijkstra、Floyd、Prim、Kruskal算法
讲在前面的话,图的算法太多,理论知识肯定一篇文章讲不完,关于理论知识大家可以参考教材Sedgewick的<算法>或reference的链接,本文主要还是想在一篇文章中记录六种算法的Pyth ...
- POJ1683 Puzzlestan ——Floyd传递闭包+Dfs
好久没写Dfs了,拿来练手. WA了一次,没有判断中间的情况-- 解法:先用Floyd传递闭包处理哪些点一定要在一起.哪些点一定不能在一起,六重循环. 然后深搜,res[i][j]表示1,i这个物品在 ...
- dfs时间复杂度_Python实现图的经典DFS、BFS、Dijkstra、Floyd、Prim、Kruskal算法
讲在前面的话,图的算法太多,理论知识肯定一篇文章讲不完,关于理论知识大家可以参考教材Sedgewick的<算法>或reference的链接,本文主要还是想在一篇文章中记录六种算法的Pyth ...
- 图论板子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 ...
- 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 ...
- BZOJ1491: [NOI2007]社交网络(Floyd 最短路计数)
Time Limit: 10 Sec Memory Limit: 64 MB Submit: 2343 Solved: 1266 [Submit][Status][Discuss] Descrip ...
最新文章
- 最新!2021 中国内地大学 ESI 排名出炉
- IOS设计模式第六篇之适配器设计模式
- CV:Win10下深度学习框架安装之Tensorflow/tensorflow_gpu+Cuda+Cudnn(最清楚/最快捷)之详细攻略(图文教程)
- socket发送请求,协程
- osg着色语言着色_探索数字着色
- ActiveMQ反序列化漏洞(CVE-2015-5254)复现
- webstorm最新版破解教程及汉化教程(也是看别人的)
- 达摩院成立XG实验室!阿里官宣进军5G
- 解决NSTimer循环引用
- 设计一个服务器资源管理系统,基于虚拟化技术的服务器资源管理系统的设计与实现.pdf...
- vue 秒转换为时分秒_Vue源码全面解析二十九 parse函数(转换html模板为AST语法结构)...
- 重装系统时,USB接口鼠标和键盘不能使用的解决办法
- 智能建造如何转型升级?智慧工地引领建筑行业智能化信息化发展
- 共享经济突围路在何方 ?共享洗衣机能否突围?
- java 随机姓名_随机组合生成好听的名字(java)
- HTML5Canvas实现简易画图工具(铅笔,直线,矩形,圆,文本框,橡皮擦等)
- Git查看本机 ssh 公钥或生成公钥
- 网易跨域实现笔记以及顺便发现的XSS
- CNN2019.11.22
- 2023哈尔滨工程大学计算机考研信息汇总