题目链接

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

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

  1. //
  2. #include <cstdio>
  3. #include <queue>
  4. #include <cstring>
  5. #include <iostream>
  6. const int INF = << ;
  7. using namespace std ;
  8.  
  9. int N,M ;
  10. int mapp[][] ,pre[],dist[];
  11. bool vis[] ;
  12.  
  13. void spfa(int src)
  14. {
  15. for(int i = ; i <= N ; i++)
  16. {
  17. vis[i] = false ;
  18. dist[i] = INF ;
  19. }
  20. queue<int>Q ;
  21. dist[src] = ;
  22. vis[src] = true ;
  23. Q.push(src) ;
  24. while(!Q.empty())
  25. {
  26. int u = Q.front() ;
  27. Q.pop() ;
  28. vis[u] = false ;
  29. for(int i = ; i <= N ; i++)
  30. {
  31. if(dist[i] > dist[u] + mapp[u][i] && mapp[u][i] != INF)
  32. {
  33. dist[i] = dist[u] + mapp[u][i] ;
  34. if(!vis[i])
  35. {
  36. vis[i] = true ;
  37. Q.push(i) ;
  38. }
  39. }
  40. }
  41. }
  42. }
  43. int dfs(int s)
  44. {
  45. if(pre[s]) return pre[s];
  46. if(s == ) return ;
  47. int cnt = ;
  48. for(int i = ;i <= N ; i++)
  49. {
  50. if(mapp[s][i] < INF && dist[s] > dist[i])
  51. {
  52. if(pre[i]) cnt += pre[i];//已经找过了
  53. else cnt += dfs(i);
  54. }
  55. }
  56. pre[s] = cnt ;
  57. return pre[s];
  58. }
  59. void Init()
  60. {
  61. for(int i = ; i <= N ; i++)
  62. for(int j = ; j <= N ; j++)
  63. {
  64. if(i == j) mapp[i][j] = ;
  65. else mapp[i][j] = INF ;
  66. }
  67. memset(pre,,sizeof(pre)) ;
  68. }
  69. int main()
  70. {
  71. while(cin >> N)
  72. {
  73. if(N == ) break ;
  74. cin >> M ;
  75. Init() ;
  76. int u,v,w ;
  77. while(M--)
  78. {
  79. cin >> u >> v >> w ;
  80. mapp[u][v] = mapp[v][u] = w ;
  81. }
  82. spfa() ;
  83. cout << dfs() << endl ;
  84. }
  85. return ;
  86. }

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. Android系统编译脚本理解

    android源码编译步骤: 1. repo sync 代码(下载代码) 2.start branch(用哪个分支,git相关) 3. 到根目录(android目录) $cd android/ 4. ...

  2. 九度oj 1349 数字在排序数组中出现的次数

    原题链接:http://ac.jobdu.com/problem.php?pid=1349 二分.. #include<algorithm> #include<iostream> ...

  3. ios中如何计算(页数,行数,等等的算法)

    页数 = (总个数 + 每页最大显示个数 - 1) / 每页显示最大的个数

  4. Go实现线程池

    本文通过代码讲解如何实现一个线程池.代码(来自https://gobyexample.com/)及注释如下: package main import "fmt" import &q ...

  5. IIS 8.5配置.net网站[花了半个多小时]

    1.默认安装了IIS部分功能.参考http://www.cnblogs.com/xuanhun/p/4201645.html 2.运用程序连接池, 使用集成 模式 3.运用程序连接池,设置启用32位应 ...

  6. UML 中的用例图解析以及starUML详细介绍

    UML中的用例(Use Case)概念分析及StarUML实例 在UML 中use case 似 乎最簡單的,用例建模的最主要功能就是用来表达系统的功能性需求或行为,依我的理解用例建模可分为用例图和用 ...

  7. P3245: 最快路线

    这道题其实还是不难的,只是自己搞混了=-=//晕,做了好久啊,其实就是个spfa,关键是存储路径搞昏了.输出格式要求太严了,航模不能有空格啊,所以因为格式WA了三次,哭啊/(ㄒoㄒ)/~~.贴上代码吧 ...

  8. 20145103《java程序设计》第五周学习总结

    20145103<Java程序设计>第5周学习总结 教材学习内容总结 第八章 异常处理 1.设计错误对象都继承自java.lang.Throwable类 2.Java中所有错误都会被打包为 ...

  9. httphelp web自动化

    public class HttpHelper    {        public static CookieContainer CookieContainers = new CookieConta ...

  10. SQLServer BCP 命令的使用

    现在有一个包含数据的文件,每个字段用“|”分隔,现在要把这些数据导入到数据库的表中. 数据文件如下: R001|20150710 可以使用如下命令: bcp testDB.dbo.testTable ...