hdu1142(dijastra+记忆化搜索)
来源:互联网 发布:思科网络认证 编辑:程序博客网 时间:2024/05/23 11:24
题目链接A Walk Through the Forest
记忆化搜索介绍 hdu1078
如果从B到home的路比任何从home到A的路要短,那么久有一条A从到B的路,计算一个可以由几条路
如图
dfs(1)
⑴ A->2,return 1, p[A]+=1 p[1]+=1 ===>p[A]=1 p[1]=1
⑵B->C
->2,return 1,p[C]+=1 ===> p[C]=1
->D,D->2,return 1, p[D]+=1,p[C]+=1 p[B]+=2 ===> p[D]=1 p[C]=2 p[B]=2 p[1]=3
⑶->D,return p[D] p[1]+=1 ===> p[D]=1 p[C]=2 p[B]=2 p[1]=4
#include <iostream>#include <stdio.h>#include <vector>#include <memory.h>#include <queue>using namespace std;const int INF=0x3f3f3f3f;const int MAXN=1005;const int MAXM=1000010;struct node{ int v; int c; node(int _v=0,int _c=0):v(_v),c(_c){} bool operator <(const node&r)const { return c>r.c; }};struct Edge{ int v,cost; Edge(int _v=0,int _cost=0):v(_v),cost(_cost){}};vector<Edge>E[MAXM];bool vis[MAXN];int dist[MAXN];int p[MAXN];int n,m;void Dijkdtra(int start){ memset(vis,false,sizeof(vis)); memset(dist,0x3f3f3f3f,sizeof(dist)); priority_queue<node>pq; dist[start]=0; pq.push(node(start,0)); node tmp; while(!pq.empty()){ tmp=pq.top(); pq.pop(); int u=tmp.v; if(vis[u])continue; vis[u]=true; for(int i=0;i<E[u].size();i++){ int v=E[u][i].v; int cost=E[u][i].cost; if(!vis[v]&&dist[v]>dist[u]+cost){ dist[v]=dist[u]+cost; pq.push(node(v,dist[v])); } } }}void addedge(int u,int v,int w){ E[u].push_back(Edge(v,w));}int dfs(int u){ if(u==2)return 1; if(p[u])return p[u]; for(int i=0;i<E[u].size();i++){ int v=E[u][i].v; if(dist[u]>dist[v])p[u]+=dfs(v); } return p[u];}int main(){ //freopen("in.txt","r",stdin); int u,v,w; while(scanf("%d",&n)&&n){ for(int i=1;i<=n;i++)E[i].clear(); scanf("%d",&m); for(int i=0;i<m;i++){ scanf("%d%d%d",&u,&v,&w); addedge(u,v,w); addedge(v,u,w); } Dijkdtra(2); memset(p,0,sizeof(p)); dfs(1); printf("%d\n",p[1]); } return 0;}
0 0
- hdu1142(dijastra+记忆化搜索)
- hdu1142-记忆化搜索
- hdu1142 dijstra + 记忆化搜索
- HDU1142 A Walk Through the Forest 【SPFA】+【记忆化搜索】
- hdu1142 - A Walk Through the Forest(SPFA+记忆化搜索)
- HDU1142——A Walk Through the Forest(spfa+记忆化搜索)
- HDU1142-A Walk Through the Forest(记忆化搜索+SPFA)
- hdu1142 A Walk Through the Forest(spfa+记忆化搜索)
- hdu1142 A Walk Through the Forest —— dijkstra + 记忆化搜索
- HDU1142 A Walk Through the Forest(SPFA+记忆化搜索)
- hdu1142 A Walk Through the Forest 最短路和记忆式搜索dijstra+dfs
- hdu1142
- hdu1142
- hdu1142
- hdu1142
- HDU1142
- 记忆化搜索例题
- PKU1088---记忆化搜索
- week5_day1_JavaSE
- String操作符 “+” 原理
- 组巡--创建目录,上传
- C++ 单链表基本操作分析与实现
- HDU-1142-A Walk Through the Forest
- hdu1142(dijastra+记忆化搜索)
- Java读取多层级xml文件
- #501 – 在对个控件中共享事件处理程序(Sharing an Event Handler Across Multiple Controls)
- Spring揭秘(五)——BeanFactory的XML之旅
- java栈深度
- hdu1166 敌兵布阵(线段树单点更新+区间求和)
- STL Deque 容器
- PDO:什么是预处理?
- 快速幂与矩阵快速幂