hduoj----1142A Walk Through the Forest(记忆化搜索+最短路)
A Walk Through the Forest
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5679 Accepted Submission(s): 2086
The forest is beautiful, and Jimmy wants to take a different route everyday. He also wants to get home before dark, so he always takes a path to make progress towards his house. He considers taking a path from A to B to be progress if there exists a route from B to his home that is shorter than any possible route from A. Calculate how many different routes through the forest Jimmy might take.
4
#include<cstdio>
#include<cstring>
using namespace std;
const int inf =0x3f3f3f3f;
const int maxn =1005;
bool vis[maxn];
int lowc[maxn],map[maxn][maxn];
int roadnum[maxn];
void Dijkstra(int st,int n)
{
int minx;
memset(vis,0,sizeof(vis));
vis[st]=0;
for(int i=1;i<=n;i++){
lowc[i]=map[st][i];
}
lowc[st]=0;
int pre=st;
for(int i=1;i<n;i++){
minx=inf;
for(int j=1;j<=n;j++){
if(!vis[j]&&lowc[pre]+map[pre][j]<lowc[j]){
lowc[j]=lowc[pre]+map[pre][j];
} }
for(int j=1;j<=n;j++){
if(!vis[j]&&minx>lowc[j]){
minx=lowc[j];
pre=j;
}
}
vis[pre]=true;
}
} /*记忆化搜索dfs*/
int Dfs(int st,int n){ if(st==2) return 1;
else if(roadnum[st]) return roadnum[st] ; //如果已经计算出来了就直接返回的路径条数
int sum=0;
for(int i=1;i<=n;i++){
if(map[st][i]!=inf&&lowc[st]>lowc[i])
sum+=Dfs(i,n);
}
roadnum[st]+=sum;
return roadnum[st];
}
void init(int n)
{
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
map[i][j]=map[j][i]=inf;
}
}
}
int main()
{
int n,m;
int x,y,val;
while(scanf("%d",&n)!=EOF&&n!=0){
scanf("%d",&m);
init(n);
memset(roadnum,0,sizeof(roadnum));
while(m--){
scanf("%d%d%d",&x,&y,&val);
if(map[y][x]>val)
map[y][x]=map[x][y]=val;
}
Dijkstra(2,n);
printf("%d\n",Dfs(1,n));
}
return 0;
}
hduoj----1142A Walk Through the Forest(记忆化搜索+最短路)的更多相关文章
- 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 ...
- HDU - 5001 Walk(概率dp+记忆化搜索)
Walk I used to think I could be anything, but now I know that I couldn't do anything. So I started t ...
- NOIP 2017 逛公园 记忆化搜索 最短路 好题
题目描述: 策策同学特别喜欢逛公园.公园可以看成一张N个点MM条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,N号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要花的时间. ...
- UVA - 10917 - Walk Through the Forest(最短路+记忆化搜索)
Problem UVA - 10917 - Walk Through the Forest Time Limit: 3000 mSec Problem Description Jimmy exp ...
- 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 ...
- HDU 1142 A Walk Through the Forest(SPFA+记忆化搜索DFS)
题目链接 题意 :办公室编号为1,家编号为2,问从办公室到家有多少条路径,当然路径要短,从A走到B的条件是,A到家比B到家要远,所以可以从A走向B . 思路 : 先以终点为起点求最短路,然后记忆化搜索 ...
- HDU 1142 A Walk Through the Forest(Dijkstra+记忆化搜索)
题意:看样子很多人都把这题目看错了,以为是求最短路的条数.真正的意思是:假设 A和B 是相连的,当前在 A 处, 如果 A 到终点的最短距离大于 B 到终点的最短距离,则可以从 A 通往 B 处,问满 ...
- HDU 4444 Walk (离散化建图+BFS+记忆化搜索) 绝对经典
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4444 题意:给你一些n个矩形,给你一个起点,一个终点,要你求从起点到终点最少需要转多少个弯 题解:因为 ...
- HDU1142 (Dijkstra+记忆化搜索)
A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
随机推荐
- ubuntu下phpstorm无法输入中文的解决办法
http://blog.csdn.net/woshiliulei0/article/details/51657356 今天期待已久的搜狗输入法linux版上线了,对于我们这种之前用习惯了搜狗输入法的屌 ...
- BeagleBone Black– 智能家居控制系统 LAS - ESP8266 UDP 服务
NodeMCU 的文档里面终于发现,ESP8266 的GPIO 2 确实是 PIN 4,GPIO 0 是 PIN 3. https://github.com/nodemcu/nodemcu-firmw ...
- linux挂载共享文件夹
挂载windows共享目录或FTP: 方式一:包含密码 Shell代码 收藏代码 sudo mount //192.168.10.22/FTPServer /windows -o username=u ...
- Struts2配置详解_配置Action
Struts2的核心功能是action,对于开发人员来说,使用Struts2主要就是编写action,action类通常都要实现com.opensymphony.xwork2.Action接口,并实现 ...
- 读写分离提高 SQL Server 并发性能
以下内容均非原创,仅作学习.分享!! 在 一些大型的网站或者应用中,单台的SQL Server 服务器可能难以支撑非常大的访问压力.很多人在这时候,第一个想到的就是一个解决性能问题的利器——负载均衡. ...
- hdu 4828 Grids 卡特兰数+逆元
Grids Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Problem D ...
- 数据库分库分表(sharding)
地址: http://blog.csdn.net/column/details/sharding.html
- asp.netMVC中,视图层和控制器层的传值
Asp.Net Mvc 控制器与视图的数据传递 摘要:本文将讨论asp.net mvc框架中的数据传递. 数据传递也就是控制器和视图之间的交互,比如在视图中提交的数据,在控制器怎么获取,或者控制器从业 ...
- servlet文件上传
1.获取文件上传路径 String path=request.getServletContext.getRePath("/WEB-INF/resources"); 2.获得工厂 3 ...
- [转载] 新浪微博MySQL优化的小结和反思
原文: http://mp.weixin.qq.com/s?__biz=MzA4Nzg5Nzc5OA==&mid=206762682&idx=1&sn=1233ed1496d7 ...