HDU 1142(djstar+记忆化搜索)
来源:互联网 发布:淘宝开店协议点同意 编辑:程序博客网 时间:2024/05/18 01:19
题意不是问最短路有多少条,而是问从下一个点出发有多少条路比从当前点出发到2(终点)要短?? 最短路算法方面是直接套用的模板,不过这次不是先求终点到各点的最短路,再从源点进行搜索。
#include<stdio.h>#include<string.h>#include<vector>#include<queue>using namespace std;const int N=1100;const int INF=0x3f3f3f3f;struct node{ int u,d; int operator<(const node x)const { return x.d<d; }};struct maps{ int v,w;}edge[N*N];vector<int> g[N];int n,s,cnt,d[N],dp[N];void init(){ for(int i=0;i<N;i++) { g[i].clear(); d[i]=INF; } cnt=0; memset(dp,0,sizeof(dp));}void add(int u,int v,int w){ edge[cnt].v=v,edge[cnt].w=w; g[u].push_back(cnt++);}void dijstar(int s){ priority_queue<node> q; node cur,next; cur.u=s,cur.d=0; d[s]=0; q.push(cur); maps e; int i,u; while(!q.empty()) { cur=q.top(); q.pop(); u=cur.u; if(d[u]!=cur.d) continue; for(i=0;i<g[u].size();i++) { e=edge[g[u][i]]; if(d[e.v]>d[u]+e.w) { d[e.v]=d[u]+e.w; next.u=e.v,next.d=d[e.v]; q.push(next); } } }}int dfs(int u){ if(u==2) return 1; if(dp[u]) return dp[u]; int tmp=0; for(int i=0;i<g[u].size();i++) { int v=edge[g[u][i]].v; if(d[v]<d[u]) { tmp+=dfs(v); } } dp[u]=tmp; return dp[u];}int main(){ int m,i,u,v,w; while(scanf("%d",&n)!=EOF&&n) { scanf("%d",&m); init(); while(m--) { scanf("%d%d%d",&u,&v,&w); add(u,v,w); add(v,u,w); } dijstar(2); printf("%d\n",dfs(1)); } return 0;}
0 0
- HDU 1142(djstar+记忆化搜索)
- hdu 1142 记忆化搜索
- hdu 1142 记忆化搜索
- 【记忆化搜索】HDU
- HDU-1142(最短路+记忆化搜索)
- hdu 1142 记忆化搜索 dijkstra
- HDU-1142-最短路+记忆化搜索
- hdu 1242Rescue(记忆化搜索)
- hdu 2571 命运 (记忆化搜索)
- hdu 1088 滑雪(记忆化搜索)
- hdu 1508 Alphacode(记忆化搜索)
- hdu 1579(记忆化搜索)
- hdu 1978(记忆化搜索)
- hdu 1208(记忆化搜索)
- hdu 1078 (dp记忆化搜索)
- HDU 1978(记忆化搜索)
- hdu 1078(记忆化搜索)
- HDU-1428(记忆化搜索)
- 覆盖度统计及测试流程
- 南邮 OJ 1024 01排序
- COPY 构建亿级前端读服务
- cocos2dx3.0rc导出自定义类到lua的方法详细步骤
- 7. Document write() 方法
- HDU 1142(djstar+记忆化搜索)
- 程序员是否必须会算法
- C语言变长参数的认识以及宏实现
- windows 判断环境变量有无输入正确 echo %JAVA_HOME%
- [深入理解Android卷二 全文-第二章]深入理解Java Binder和MessageQueue
- Android Adb.exe工具使用
- css大会网站顶部的一个特效
- shell 总结 单引号 双引号 花括号
- 开发第一个Android应用之前你需要知道的六件事