hdu1142(dj+记忆化搜索)
题意:给你n各点,m行关于这些点的联通关系,以及距离,求从1这个点到2这个点之间,下一个点到2这个点比当前点到2这个点的距离要小的路径的条数......
思路:dj+记忆化搜索.......
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
typedef __int64 ss;
#define max 1010
#define p 10000000
ss a[max][max];
ss n,m;
ss dp[max],dist[max];
void dj(ss n,ss v,ss v1)
{
ss i,j,k,min;
ss s[max];
for(i=1;i<=n;i++)
{
dist[i]=a[v][i];
s[i]=0;
}
s[v]=1;
for(i=2;i<=n;i++)
{
min=p;
k=1;
for(j=1;j<=n;j++)
if(s[j]==0&&dist[j]<min)
{
k=j;
min=dist[j];
}
s[k]=1;
for(j=1;j<=n;j++)
if(s[j]==0)
if(a[k][j]<p&&dist[k]+a[k][j]<dist[j])
dist[j]=dist[k]+a[k][j];
}
}
ss dfs(ss num)
{
if(dp[num]) return dp[num];
if(num==2) return 1;
ss sum=0;
for(ss i=1;i<=n;i++)
{
if(i==num)
continue;
if(a[num][i]!=p&&dist[num]>dist[i])
{
sum+=dfs(i);
}
}
dp[num]=sum;
return dp[num];
}
int main()
{
while(scanf("%I64d",&n)>0&&n)
{
scanf("%I64d",&m);
for(ss i=0;i<=n;i++)
for(ss j=0;j<=n;j++)
a[i][j]=p;
for(ss i=0;i<=n;i++)
a[i][i]=0;
for(ss i=1;i<=m;i++)
{
ss tmp,x,y;
scanf("%I64d%I64d%I64d",&x,&y,&tmp);
if(a[x][y]>tmp)
{
a[x][y]=a[y][x]=tmp;
}
}
dj(n,2,1);
//for(int i=1;i<=n;i++)
//printf("%I64d\n",dist[i]);
memset(dp,0,sizeof(dp));
printf("%I64d\n",dfs(1));
}
return 0;
}
hdu1142(dj+记忆化搜索)的更多相关文章
- hdu-1142(记忆化搜索+dij)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1142 思路:1.不是求最短路径,而是求如果两个点A,B直接相连,且A到终点的距离大于B到终点的距离,求 ...
- HDU1142 (Dijkstra+记忆化搜索)
A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
- 动态规划——I 记忆化搜索
Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...
- hdu1428(记忆化搜索)
题意:“他考虑从A区域到B区域仅当存在一条从B到机房的路线比任何一条从A到机房的路线更近(否则可能永远都到不了机房了…”这句话一定要理解清楚.就是说,对于当前位置,如果下一个状态与终点的最短距离大于或 ...
- 洛谷3953 (NOIp2017) 逛公园——记忆化搜索+用栈判0环
题目:https://www.luogu.org/problemnew/show/P3953 因为K只有50,所以想到用dp[ cr ][ j ]表示在点cr.比最短路多走了 j 的方案数.(看了TJ ...
- [ACM_动态规划] 数字三角形(数塔)_递推_记忆化搜索
1.直接用递归函数计算状态转移方程,效率十分低下,可以考虑用递推方法,其实就是“正着推导,逆着计算” #include<iostream> #include<algorithm> ...
- 【BZOJ-3895】取石子 记忆化搜索 + 博弈
3895: 取石子 Time Limit: 1 Sec Memory Limit: 512 MBSubmit: 263 Solved: 127[Submit][Status][Discuss] D ...
- hdu3555 Bomb (记忆化搜索 数位DP)
http://acm.hdu.edu.cn/showproblem.php?pid=3555 Bomb Time Limit: 2000/1000 MS (Java/Others) Memory ...
- zoj 3644(dp + 记忆化搜索)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4834 思路:dp[i][j]表示当前节点在i,分数为j的路径条数,从 ...
随机推荐
- GLSL 在OpenGL中向shader传递信息【转】
http://blog.csdn.net/hgl868/article/details/7872219 引言 一个OpenGL程序可以用多种方式和shader通信.注意这种通信是单向的,因为shade ...
- Python 爬虫 之 阅读呼叫转移(三)
尽管上一篇博客中我们能够连续地阅读章节了,可是.难道每一次看小说都执行一下我们的 Python 程序?连记录看到哪里都不行,每次都是又一次来过?当然不能这样,改! 如今这么多小说阅读器,我们仅仅须要把 ...
- linux sendmail 邮件服务器架设
大家都知道架邮件服务器首先要架DNS服务.架设sendmail邮件服务器,以供大家一起学习探讨. 步骤一, 安装SNEDMAIL服务,查看你是否有安装SENDMAIL. #rpm -qa|grep b ...
- 【Python】Python中的深浅拷贝
[转]python 复制(拷贝)对象 -- ::| 分类: Python |举报|字号 订阅 下载LOFTER我的照片书 | 需求: 你想复制一个对象.因为在Python中,无论你把对象做为参数传递, ...
- reportservice报表单元格依据条件显示不同的颜色
有时候.我们须要依据条件,让单元格显示不同的颜色: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveV9mMTIz/font/5a6L5L2T/fontsi ...
- 转换和删除重复命令tr
前几篇文章介绍了几个用于处理字符的命令和工具,然而在处理大小写转换.删除重复字符等任务时,这些命令处理起来相对较为麻烦.这里将简单介绍Linux下自带的tr命令,相对于其他命令而言,其语法较为简单,比 ...
- Servlet 过滤器 Filter
过滤器是一个实现了 javax.servlet.Filter 接口的 Java 类.javax.servlet.Filter 接口定义了三个方法: 下面是对所有编码过滤器 package filter ...
- android中RecycleView分页原生代码封装,无任何第三方代
概述 RecycleView分页加载封装,简单方便,功能齐全 详细 代码下载:http://www.demodashi.com/demo/13283.html 一.场景: 在项目开发中经常使用到列表集 ...
- GG中obey命令的使用
obey命令的使用. 我们能够将一些在GGSCI命令行工具中输入的命令,放到一个文件里. 比如将以下的命令,放到direnv/db.oby文件里. ADD EXTRACT d_ncbs, EXTTRA ...
- android下载
1. 源码下载链接: http://source.android.com/source/downloading.html 参考链接: Android源码下载方法详解 2. SDK下载 http://d ...