博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 10917 Walk Through the Forest SPFA
阅读量:4979 次
发布时间:2019-06-12

本文共 1616 字,大约阅读时间需要 5 分钟。

uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1858

题目大意:

Jimmy下班后决定每天沿着一条不同的路径回家,欣赏不同的风景。他打算只沿着满足如下条件的(A,B)道路走:存在一条从B出发回家的路,比所有从A出发回家的路径都短。你的任务是计算一共有多少条不同的回家路径。其中公司的编号为1,家的编号为2.

思路:

题目给出的n于1000以内,所以我直接用了邻接矩阵了。

首先求出每个点回家的最短路径。dis[u](SPFA或者dijkstra都可以)

题目说的存在一条从B出发回家的路,比所有从A出发回家的路径都短,即dis[B]<dis[A],这样我们创建一个新的图,当dis[B]<dis[A]建立有向变A->B,然后用动态规划求解。

(没一个点要加上与他相连的所有边的次数)

#include
#include
#include
#include
using namespace std;const int INF=10000000;const int MAXN=1024;int dis[MAXN];int n,m;int map[MAXN][MAXN];int cango[MAXN][MAXN];int dp[MAXN];void SPFA(){ int start=2; bool vis[MAXN]={0}; deque
q; q.push_back(start); dis[start]=0; vis[start]=true; while(!q.empty()) { int cur=q.front(); q.pop_front(); vis[cur]=false; for(int i=1;i<=n;i++) if(map[cur][i]+dis[cur] < dis[i]) { dis[i]=map[cur][i]+dis[cur]; if(!vis[i]) { vis[i]=true; if(!q.empty() && dis[i] < dis[q.front()]) q.push_front(i); else q.push_back(i); } } }}int dfs(int cur){ if(dp[cur]!=-1) return dp[cur]; int temp=0; for(int i=1;i<=n;i++) if(cango[cur][i]) { temp+=dfs( i ); } return dp[cur]=temp;}int main(){ while(~scanf("%d",&n),n) { for(int i=1;i<=n;i++) { dis[i]=INF; dp[i]=-1; for(int j=1;j<=n;j++) { map[i][j]=INF; cango[i][j]=0; } } scanf("%d",&m); for(int i=0;i
dis[j] && map[i][j]!=INF) cango[i][j]=1; dp[2]=1; dfs(1); printf("%d\n",dp[1]); }}

转载于:https://www.cnblogs.com/murmured/p/5004135.html

你可能感兴趣的文章
CSS3中的选择器
查看>>
Leetcode860.Lemonade Change柠檬水找零
查看>>
隐藏,显示任务栏
查看>>
ArrayList和数组间的相互转换
查看>>
oracle恢复一个数据表的方法
查看>>
jquery如何通过name名称获取当前name的value值
查看>>
oracle控制何时触发审计动作
查看>>
NVelocity用法
查看>>
关于xp_cmdshall开启特定账号执行的相关设置步骤
查看>>
[USACO 6.3.2] Cryptcowgraphy
查看>>
.net 开发人员面试题 - 多线程
查看>>
PHP实现的快速排序
查看>>
AE属性表操作
查看>>
2进制_8进制_16进制之间快速转换的技巧.txt
查看>>
Python学习(五)函数 —— 内置函数 lambda filter map reduce
查看>>
[转] PDB文件概说
查看>>
再坚持一年多就写代码到40岁了,一直坚持.NET也没什么大错,傻B青年快乐多重新回归博客园...
查看>>
hbase安装配置
查看>>
How to publish a WordPress blog to a static GitLab Pages site
查看>>
面试人生
查看>>