题目链接

题意 :办公室编号为1,家编号为2,问从办公室到家有多少条路径,当然路径要短,从A走到B的条件是,A到家比B到家要远,所以可以从A走向B 。

思路 : 先以终点为起点求最短路,然后记忆化搜索。

 //
#include <cstdio>
#include <queue>
#include <cstring>
#include <iostream>
const int INF = << ;
using namespace std ; int N,M ;
int mapp[][] ,pre[],dist[];
bool vis[] ; void spfa(int src)
{
for(int i = ; i <= N ; i++)
{
vis[i] = false ;
dist[i] = INF ;
}
queue<int>Q ;
dist[src] = ;
vis[src] = true ;
Q.push(src) ;
while(!Q.empty())
{
int u = Q.front() ;
Q.pop() ;
vis[u] = false ;
for(int i = ; i <= N ; i++)
{
if(dist[i] > dist[u] + mapp[u][i] && mapp[u][i] != INF)
{
dist[i] = dist[u] + mapp[u][i] ;
if(!vis[i])
{
vis[i] = true ;
Q.push(i) ;
}
}
}
}
}
int dfs(int s)
{
if(pre[s]) return pre[s];
if(s == ) return ;
int cnt = ;
for(int i = ;i <= N ; i++)
{
if(mapp[s][i] < INF && dist[s] > dist[i])
{
if(pre[i]) cnt += pre[i];//已经找过了
else cnt += dfs(i);
}
}
pre[s] = cnt ;
return pre[s];
}
void Init()
{
for(int i = ; i <= N ; i++)
for(int j = ; j <= N ; j++)
{
if(i == j) mapp[i][j] = ;
else mapp[i][j] = INF ;
}
memset(pre,,sizeof(pre)) ;
}
int main()
{
while(cin >> N)
{
if(N == ) break ;
cin >> M ;
Init() ;
int u,v,w ;
while(M--)
{
cin >> u >> v >> w ;
mapp[u][v] = mapp[v][u] = w ;
}
spfa() ;
cout << dfs() << endl ;
}
return ;
}

HDU 1142 A Walk Through the Forest(SPFA+记忆化搜索DFS)的更多相关文章

  1. HDU 1142 A Walk Through the Forest(Dijkstra+记忆化搜索)

    题意:看样子很多人都把这题目看错了,以为是求最短路的条数.真正的意思是:假设 A和B 是相连的,当前在 A 处, 如果 A 到终点的最短距离大于 B 到终点的最短距离,则可以从 A 通往 B 处,问满 ...

  2. HDU 1142 A Walk Through the Forest(dijkstra+记忆化DFS)

    题意: 给你一个图,找最短路.但是有个非一般的的条件:如果a,b之间有路,且你选择要走这条路,那么必须保证a到终点的所有路都小于b到终点的一条路.问满足这样的路径条数 有多少,噶呜~~题意是搜了解题报 ...

  3. HDU 1142 A Walk Through the Forest (记忆化搜索 最短路)

    A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Jav ...

  4. HDU 1142 A Walk Through the Forest(最短路+记忆化搜索)

    A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Jav ...

  5. 题解报告:hdu 1142 A Walk Through the Forest

    题目链接:acm.hdu.edu.cn/showproblem.php?pid=1142 Problem Description Jimmy experiences a lot of stress a ...

  6. HDU 4444 Walk (离散化建图+BFS+记忆化搜索) 绝对经典

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4444 题意:给你一些n个矩形,给你一个起点,一个终点,要你求从起点到终点最少需要转多少个弯 题解:因为 ...

  7. hdu1428 spfa+记忆化搜索

    题意:      题意坑爹,很容易误认成是做短路的条数,题意是给你一个图,让你从起点走到终点,问你有多少种走法,但有一个限制,假如你想从a走到b,必须满足终点到b的最短距离小于终点到a的最短距离. 思 ...

  8. HDU 1142 A Walk Through the Forest (求最短路条数)

    A Walk Through the Forest 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1142 Description Jimmy exp ...

  9. hdu 1142 A Walk Through the Forest (最短路径)

    A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Jav ...

随机推荐

  1. Stream,Reader/Writer,Buffered的区别(1)

    Stream: 是字节流形式,exe文件,图片,视频等.支持8位的字符,用于 ASCII 字符和二进制数据. Reader/Writer: 是字符流,文本文件,XML,txt等,用于16位字符,也就是 ...

  2. libcurl 安装使用一

    一.下载libcurl http://curl.haxx.se/download/curl-7.21.1.tar.gz 二.安装   指定了安装目录     /usr/local/curl 命令1: ...

  3. Spring Dynamic Modules - DMserver

    spring dm server 官网:http://static.springsource.com/projects/dm-server/1.0.x/programmer-guide/htmlsin ...

  4. [原]Java修炼 之 基础篇(一)Java语言特性

    学习软件开发,首先要选择的就是选择需要采用的编程语言,考虑语言本身的优缺点和实际需求,综合评价之后选择相关的语言进行系统开发.本篇博客开始就从近年来比较流行的Java开始为大家讲起. 背景 1995年 ...

  5. 关于使用regsvr32命令注册ActiveX控件失败的解决办法

    昨天小编也遇到这样问题,步骤一切都对,没有错误,但是每次在命令行下输入的时候,都会弹出一个对话框: 最后我发现是存放ActiveX控件的路径中带有中文文件名字所导致,所以导致的错误,我们将所在路径下的 ...

  6. 基于BaseAdapter的GridView设置ImageView大小

    基于BaseAdapter的GridView设置ImageView大小 网上找了好多,都是基于SimpleAdapter的,本身在Item.xml中就对ImageView设置了id,而基于BaseAd ...

  7. 手把手教你自动生成Makefile

    概述:autoconf/automake工具用于自动创建功能完善的Makefile文件,接下来简单介绍一下,如何使用上述工具 自动生成Makefile 前提:安装autoconf工具(ubuntu:s ...

  8. [原创] zabbix学习之旅五:如何快速搭建一个报警系统

    通过之前的文章,我们已搭建好zabbix server.agent和mail客户端,现在万事俱备,只差在server的界面中进行相应配置,即可快速搭建一个报警系统.总的来说,快速搭建一个报警系统的顺序 ...

  9. SQL Server性能优化(3)使用SQL Server Profiler查询性能瓶颈

    关于SQL Server Profiler的使用,网上已经有很多教程,比如这一篇文章:SQL Server Profiler:使用方法和指标说明.微软官方文档:https://msdn.microso ...

  10. bzoj 1189 二分+最大流判定

    首先我们可以二分一个答案时间T,这样就将最优性问题 转化为了判定性问题.下面我们考虑对于已知的T的判定 对于矩阵中所有的空点bfs一次,得出来每个点到门的距离, 然后连接空点和每个能在t时间内到达的门 ...