hdu 4284 深度优先搜索
思路:就是找能走的走,遍历一边所有情况,满足就退出。
Accepted | 4284 | 328MS | 2280K | 2239 B | C++ |
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <cstring>
#include <algorithm>
#include <vector>
#define Maxn 110
#define Maxm 6000
#define LL int
#define inf 100000000
#define Abs(a) (a)>0?(a):(-a)
using namespace std;
int D[Maxn],C[Maxn],dis[Maxn][Maxn],choice[Maxn],n,m,h,vi[Maxn];
void init()
{
memset(D,,sizeof(D));
memset(C,,sizeof(C));
memset(vi,,sizeof(vi));
for(int i=;i<=;i++)
for(int j=;j<=;j++)
dis[i][j]=inf;
}
void floyd()
{
int i,j,k;
for(i=;i<=n;i++)
dis[i][i]=;
for(k=;k<=n;k++)
for(i=;i<=n;i++)
for(j=;j<=n;j++)
dis[i][j]=min(dis[i][k]+dis[k][j],dis[i][j]);
}
int dfs(int u,int leave,int num)
{
int i,j;
if(num==h)
{
if(dis[u][]<=leave)
return ;
return ;
}
for(i=;i<=h;i++)
if(!vi[choice[i]])
{
if(leave>=dis[u][choice[i]]+D[choice[i]])
{
vi[choice[i]]=;
if(dfs(choice[i],leave-dis[u][choice[i]]-D[choice[i]]+C[choice[i]],num+))
return ;
vi[choice[i]]=;
}
}
return ;
}
int main()
{
int i,j,a,b,c,t,money;
scanf("%d",&t);
while(t--)
{
init();
scanf("%d%d%d",&n,&m,&money);
for(i=;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
dis[a][b]=dis[b][a]=c<dis[a][b]?c:dis[a][b];
}
floyd();
scanf("%d",&h);
for(i=;i<=h;i++)
{
scanf("%d%d%d",&a,&b,&c);
choice[i]=a,C[a]=b,D[a]=c;
}
for(i=;i<=h;i++)
{
if(!vi[choice[i]])
{
if(money>=dis[][choice[i]]+D[choice[i]])
{
vi[choice[i]]=;
if(dfs(choice[i],money-dis[][choice[i]]-D[choice[i]]+C[choice[i]],))
break;
vi[choice[i]]=;
}
}
}
if(i<=h)
printf("YES\n");
else
printf("NO\n");
}
return ;
}
hdu 4284 深度优先搜索的更多相关文章
- HDU 1241 Oil Deposits DFS(深度优先搜索) 和 BFS(广度优先搜索)
Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- HDU(搜索专题) 1000 N皇后问题(深度优先搜索DFS)解题报告
前几天一直在忙一些事情,所以一直没来得及开始这个搜索专题的训练,今天做了下这个专题的第一题,皇后问题在我没有开始接受Axie的算法低强度训练前,就早有耳闻了,但一直不知道是什么类型的题目,今天一看,原 ...
- HDU 4707 Pet(DFS(深度优先搜索)+BFS(广度优先搜索))
Pet Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...
- 『ACM C++』HDU杭电OJ | 1416 - Gizilch (DFS - 深度优先搜索入门)
从周三课开始总算轻松了点,下午能在宿舍研究点题目啥的打一打,还好,刚开学的课程还算跟得上,刚开学的这些课程也是复习以前学过的知识,下半学期也不敢太划水了,被各种人寄予厚望之后瑟瑟发抖,只能努力前行了~ ...
- 深度优先搜索(DFS)
[算法入门] 郭志伟@SYSU:raphealguo(at)qq.com 2012/05/12 1.前言 深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法.它的思想是从一 ...
- 初涉深度优先搜索--Java学习笔记(二)
版权声明: 本文由Faye_Zuo发布于http://www.cnblogs.com/zuofeiyi/, 本文可以被全部的转载或者部分使用,但请注明出处. 上周学习了数组和链表,有点基础了解以后,这 ...
- 挑战程序2.1.4 穷竭搜索>>深度优先搜索
深度优先搜索DFS,从最开始状态出发,遍历一种状态到底,再回溯搜索第二种. 题目:POJ2386 思路:(⊙v⊙)嗯 和例题同理啊,从@开始,搜索到所有可以走到的地方,把那里改为一个值(@或者 ...
- 回溯 DFS 深度优先搜索[待更新]
首先申明,本文根据微博博友 @JC向北 微博日志 整理得到,本文在这转载已经受作者授权! 1.概念 回溯算法 就是 如果这个节点不满足条件 (比如说已经被访问过了),就回到上一个节点尝试别 ...
- 总结A*,Dijkstra,广度优先搜索,深度优先搜索的复杂度比较
广度优先搜索(BFS) 1.将头结点放入队列Q中 2.while Q!=空 u出队 遍历u的邻接表中的每个节点v 将v插入队列中 当使用无向图的邻接表时,复杂度为O(V^2) 当使用有向图的邻接表时, ...
随机推荐
- Gradle – Spring 4 MVC Hello World Example
In this tutorial, we will show you a Gradle + Spring 4 MVC, Hello World Example (JSP view), XML conf ...
- stdlib.h 头文件
stdlib 头文件即standard library标准库头文件.stdlib.h里面定义了五种类型.一些宏和通用工具函数. 类型例如size_t.wchar_t.div_t.ldiv_t和lldi ...
- BZOJ 1036 [ZJOI2008]树的统计Count (树链剖分 - 点权剖分 - 单点权修改)
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1036 树链剖分模版题,打的时候注意点就行.做这题的时候,真的傻了,单词拼错检查了一个多小时 ...
- 介绍50个 WordPress 动作挂钩
WordPress 之所以能成为世界上最受欢迎的网页内容管理系统,原因就在于它的高度灵活性和可塑性,而这种灵活性和可塑性正是由“挂钩”(Hooks)简洁宜用的结构所决定的.可以说,没有过滤挂钩(Fil ...
- Install eclipse groovy plugin
http://dist.springsource.org/release/GRECLIPSE/e4.4/
- 汇编语言(学习笔记-----[bx]和loop)
1.[bx]是什么?? 和[0]有些类似,[0]表示内存单元,它的偏移地址是0 [bx]同样也表示一个内存单元,它的偏移地址在bx中,mov ax,[bx] (字) mov ...
- 节点文件将两个不同格式的XML文件,进行节点对照,并生成一个用于对照功能的XML
本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~ 经常有的需求是,需要将一种格式的XML转换成另一种XML.如果要实现这个功能首先需要将两个不同XML手动建立节点对比关系.然后 ...
- 极域电子教室 e-Learning Class V4 2010专业版 学生机 卸载方法
学校的机房一般都会装教师机远程控制学生机的软件.比如我们学校装的就是"极域电子教室 e-Learning Class V4 2010专业版",上课的时候直接强制全屏远控,卸载又提示 ...
- 自己写一个jQuery垂直滚动栏插件(panel)
html中原生的滚动栏比較难看,所以有些站点,会自己实现滚动栏,导航站点hao123在一个側栏中,就自己定义了垂直滚动栏,效果比較好看,截图例如以下: watermark/2/text/aHR0cDo ...
- 【M26】限制某个class所能产生的对象数量
1.每当产生一个对象,必定调用构造方法.因此,禁止产生对象的做法就是,将所有的构造方法声明为private. 2.只有在类的内部才可以访问private成员,有两层含义:在类的内部可以访问this的p ...