思路:就是找能走的走,遍历一边所有情况,满足就退出。

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 深度优先搜索的更多相关文章

  1. HDU 1241 Oil Deposits DFS(深度优先搜索) 和 BFS(广度优先搜索)

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  2. HDU(搜索专题) 1000 N皇后问题(深度优先搜索DFS)解题报告

    前几天一直在忙一些事情,所以一直没来得及开始这个搜索专题的训练,今天做了下这个专题的第一题,皇后问题在我没有开始接受Axie的算法低强度训练前,就早有耳闻了,但一直不知道是什么类型的题目,今天一看,原 ...

  3. HDU 4707 Pet(DFS(深度优先搜索)+BFS(广度优先搜索))

    Pet Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...

  4. 『ACM C++』HDU杭电OJ | 1416 - Gizilch (DFS - 深度优先搜索入门)

    从周三课开始总算轻松了点,下午能在宿舍研究点题目啥的打一打,还好,刚开学的课程还算跟得上,刚开学的这些课程也是复习以前学过的知识,下半学期也不敢太划水了,被各种人寄予厚望之后瑟瑟发抖,只能努力前行了~ ...

  5. 深度优先搜索(DFS)

    [算法入门] 郭志伟@SYSU:raphealguo(at)qq.com 2012/05/12 1.前言 深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法.它的思想是从一 ...

  6. 初涉深度优先搜索--Java学习笔记(二)

    版权声明: 本文由Faye_Zuo发布于http://www.cnblogs.com/zuofeiyi/, 本文可以被全部的转载或者部分使用,但请注明出处. 上周学习了数组和链表,有点基础了解以后,这 ...

  7. 挑战程序2.1.4 穷竭搜索>>深度优先搜索

      深度优先搜索DFS,从最开始状态出发,遍历一种状态到底,再回溯搜索第二种. 题目:POJ2386  思路:(⊙v⊙)嗯  和例题同理啊,从@开始,搜索到所有可以走到的地方,把那里改为一个值(@或者 ...

  8. 回溯 DFS 深度优先搜索[待更新]

      首先申明,本文根据微博博友 @JC向北 微博日志 整理得到,本文在这转载已经受作者授权!   1.概念   回溯算法 就是 如果这个节点不满足条件 (比如说已经被访问过了),就回到上一个节点尝试别 ...

  9. 总结A*,Dijkstra,广度优先搜索,深度优先搜索的复杂度比较

    广度优先搜索(BFS) 1.将头结点放入队列Q中 2.while Q!=空 u出队 遍历u的邻接表中的每个节点v 将v插入队列中 当使用无向图的邻接表时,复杂度为O(V^2) 当使用有向图的邻接表时, ...

随机推荐

  1. 使用Core Data应避免的十个错误

    原文:Avoiding Ten Big Mistakes iOS Developers Make with Core Data   http://www.cocoachina.com/applenew ...

  2. [iOS 多线程 & 网络 - 2.7] - NSURLCache

    A.基本知识 1.为什么需要缓存?   有时候一个url会请求多次,得到的内容确实一样的   2.缓存的概念     3.缓存数据的过程     当服务器返回数据时,需要做以下步骤(1)使用服务器的数 ...

  3. POJ1061青蛙的约会(扩展欧几里得)

    #include <cstdio> #include <cstring> #include <algorithm> #include <math.h> ...

  4. UVaLive 6855 Banks (水题,暴力)

    题意:给定 n 个数,让你求最少经过几次操作,把所有的数变成非负数,操作只有一种,变一个负数变成相反数,但是要把左右两边的数加上这个数. 析:由于看他们AC了,时间这么短,就暴力了一下,就AC了... ...

  5. WinAPI: FindWindow、FindWindowEx - 查找窗口

    FindWindow(   lpClassName,        {窗口的类名}   lpWindowName: PChar {窗口的标题} ): HWND;              {返回窗口的 ...

  6. Codeforces Round #219 (Div. 1)(完全)

    戳我看题目 A:给你n个数,要求尽可能多的找出匹配,如果两个数匹配,则ai*2 <= aj 排序,从中间切断,分成相等的两半后,对于较大的那一半,从大到小遍历,对于每个数在左边那组找到最大的满足 ...

  7. 【LINUX】编程笔记

      a storage class can only be specified for objects and functions extern修饰一个struct报错,错误原因如上,C++中存储类修 ...

  8. AngularJS~大话开篇

    AngularJS是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS有着诸多特性,最为核心的是:MVVM.模块化.自动化双向数据绑定.语义化标签.依赖注入.等等. 前端 ...

  9. Converting a .jks Key Store to a .pem Key Store

    In order to convert a Java key store into a Privacy Enhanced Mail Certificate, you will need to use ...

  10. git使用具体介绍

    1. Git概念  1.1. Git库中由三部分组成         Git 仓库就是那个.git 文件夹,当中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪 ...