HDU-1142 A Walk Through the Forest
2014-05-12 18:27
302 查看
题目链接
假设 A 和 B 是相连的,当前在 A 处,如果 A 到终点的距离大于 B 到终点的距离,
则可以从 A 通往 B 处,问满足这种的条件的路径条数。
假设 A 和 B 是相连的,当前在 A 处,如果 A 到终点的距离大于 B 到终点的距离,
则可以从 A 通往 B 处,问满足这种的条件的路径条数。
#include "stdio.h" #include "string.h" const int maxn = 1005; const int inf = 1<<29; int map[maxn][maxn],dis[maxn],dp[maxn]; int n,m,count; void Dijkstra(int x) { int i,j; bool vis[maxn] = {false}; dis[x] = 0; for( i=1;i<n;i++ ) { int temp = inf; int p = x; for( j=1;j<=n;j++ ) { if( !vis[j] && dis[j] < temp ) { temp = dis[p=j]; } } vis[p] = true; for( j=1;j<=n;j++ ) { if( !vis[j] && dis[j] > dis[p] + map[p][j] ) { dis[j] = dis[p] + map[p][j]; } } } } int DFS( int x ) { if( dp[x]!=-1 ) return dp[x]; if( x==2 ) return 1; dp[x] = 0; for( int i=1;i<=n;i++ ) { if( map[x][i]<inf && dis[x] > dis[i] ) { dp[x] += DFS( i ); } } return dp[x]; } int main() { int i,j,a,b,c; while( scanf("%d",&n)!=EOF && n) { memset( dp,-1,sizeof(dp) ); for( i=0;i<=n;i++ ) { for( j=i;j<=n;j++ ) map[i][j] = map[j][i] = inf; dis[i] = inf; } scanf("%d",&m); for( i=1;i<=m;i++) { scanf("%d%d%d",&a,&b,&c); map[a][b] = map[b][a] = map[a][b]>c?c:map[a][b]; } Dijkstra(2); printf("%d\n",DFS(1) ); } return 0; }
相关文章推荐
- hdu-1142-A Walk Through the Forest
- HDU 1142 A Walk Through the Forest
- HDU 1142 A Walk Through the Forest (Dijkatra+记忆化搜索)(详解)
- hdu 1142 A Walk Through the Forest
- HDU 1142 A Walk Through the Forest 最短路+记忆化搜索
- HDU 1142 A Walk Through the Forest
- hdu 1142 A Walk Through the Forest<java>
- HDU - 1142 - A Walk Through the Forest
- Hdu-1142 A Walk Through the Forest
- HDOJ/HDU 1142 A Walk Through the Forest
- HDU 1142 A Walk Through the Forest【记忆化搜索+最短路Dijkstra算法】
- hdu 1142 A Walk Through the Forest(最短路+记忆化搜索)
- HDU 1142 A Walk Through the Forest (求最短路条数)
- HDU 1142 A Walk Through the Forest (SPFA+记忆化搜索)
- hdu 1142 A Walk Through the Forest
- hdu 1142 A Walk Through the Forest
- 【Dijkstra+DFS(记忆化)】hdu 1142 A Walk Through the Forest(外:hdu 1428)
- hdu1142 A Walk Through the Forest
- hdu 1142 A Walk Through the Forest 最短路+记忆化搜索 解题报告
- hdu 1142 A Walk Through the Forest