Power OJ 2605 SPFA+dp思想
题目链接【https://www.oj.swust.edu.cn/problem/show/2605】
题意:给出包含N(N <= 5000)个点M条边的有向图,然后求1 - N在满足距离小于T的情况下,最多走多少个点。
题解:dp[i][j]表示邹大鹏i点,经过了j个点的最短路。用pre维护一下路径即可。
#include<bits/stdc++.h>
using namespace std;
typedef pair<int, int> Pair;
const int INF = 1e9 + 15;
const int maxn = 5050;
int N, M, T;
struct Edge
{
int to, next, len;
Edge() {}
Edge(int to, int next, int len): to(to), next(next), len(len) {}
} E[maxn*maxn];
int head[maxn], tot;
void initEdge()
{
for(int i = 0; i <= N; i++) head[i] = -1;
tot = 0;
}
void addEdge(int u, int v, int len)
{
E[tot] = Edge(v, head[u], len);
head[u] = tot++;
}
int dp[maxn][maxn], pre[maxn][maxn], in[maxn][maxn];
void Spfa()
{
queue<Pair>que;
dp[1][1] = 0;
que.push(make_pair(1, 1));
in[1][1] = 1;
while(!que.empty())
{
int u = que.front().first;
int num = que.front().second;
que.pop();
in[u][num] = 0;
for(int k = head[u]; ~k; k = E[k].next)
{
int v = E[k].to;
if(dp[v][num + 1] > dp[u][num] + E[k].len)
{
dp[v][num + 1] = dp[u][num] + E[k].len;
pre[v][num + 1] = u;
if(!in[v][num + 1])
{
que.push(make_pair(v, num + 1));
in[v][num + 1] = 1;
}
}
}
}
}
int main ()
{
while(~scanf("%d %d %d", &N, &M, &T))
{
initEdge();
for(int i = 1; i <= M; i++)
{
int u, v, len;
scanf("%d %d %d", &u, &v, &len);
addEdge(u, v, len);
}
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++)
dp[i][j] = INF, pre[i][j] = in[i][j] = 0;
Spfa();
int ans = N;
for(; ans >= 1; ans--)
if(dp[N][ans] <= T) break;
vector<int>vt;
int u = N, num = ans;
while(pre[u][num])
{
int v = pre[u][num];
vt.push_back(v);
u = v;
num--;
}
printf("%d\n%d\n", dp[N][ans], ans);
int sz = vt.size() - 1;
for(int i = sz; i >= 0; i--)
printf("%d ", vt[i]);
printf("%d\n", N);
}
return 0;
}
Power OJ 2605 SPFA+dp思想的更多相关文章
- HDU-3499:Flight(SPFA+dp)
Recently, Shua Shua had a big quarrel with his GF. He is so upset that he decides to take a trip to ...
- 【BZOJ1003】1003: [ZJOI2006]物流运输trans SPFA+DP
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...
- HDU 3499 Flight spfa+dp
Flight Time Limit : 20000/10000ms (Java/Other) Memory Limit : 65535/65535K (Java/Other) Total Subm ...
- BZOJ 1003 [ZJOI2006]物流运输trans SPFA+DP
题意:链接 方法:SPFA+DP 解析:挺好的题目.因为数据范围较小所以用这样的方式能够搞,只是也是挺不好想的. 我们定义cost(i,j)表示从第i天走到第j天运用同一种方式的最小花费,然后因为数据 ...
- 到底什么是dp思想(内含大量经典例题,附带详细解析)
期末了,通过写博客的方式复习一下dp,把自己理解的dp思想通过样例全部说出来 说说我所理解的dp思想 dp一般用于解决多阶段决策问题,即每个阶段都要做一个决策,全部的决策是一个决策序列,要你求一个 最 ...
- hdu 3030 Increasing Speed Limits (离散化+树状数组+DP思想)
Increasing Speed Limits Time Limit: 2000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
- DP思想在斐波那契数列递归求解中的应用
斐波那契数列:1, 1, 2, 3, 5, 8, 13,...,即 f(n) = f(n-1) + f(n-2). 求第n个数的值. 方法一:迭代 public static int iterativ ...
- power oj 2480 放积木[二进制状压DP]
题目链接[https://www.oj.swust.edu.cn/problem/show/2480] 题意:中文题目. 题解:二进制状态转移+坏点判断. #include<cstdio> ...
- power oj 1557种树[二进制状压DP]
题目链接[https://www.oj.swust.edu.cn/problem/show/1557] 题意:中文题目. 题解:用0,1表示某个位置是否种了树,先算出同一行的有效状态的总数,即开两个1 ...
随机推荐
- url参数用&拼接并且按照字母顺序排序方法
private string urlParamManager(JObject postArray, bool flag) { ArrayList keys = new ArrayList(); for ...
- mnist 手写数字识别
mnist 手写数字识别三大步骤 1.定义分类模型2.训练模型3.评价模型 import tensorflow as tfimport input_datamnist = input_data.rea ...
- 安装node版本管理工具之NVM
nvm是个啥?nvm是一个可以让你在同一台机器上安装和切换不同版本node的工具. 你可能会问,为什么会有这个工具?有时候在开发的时候,对node版本有强制要求,有的要求用最新版本,有的要求用稳定版本 ...
- python基础学习之路No.2 数据类型
python中常见的数据类型有:整数.浮点数.字符串.列表.元组.字典 python相较其他语言,可以省略了声明,可以直接定义赋值使用. 例如: a=12 就相当于 其他语言中的 int a=12 ...
- Spring cloud Feign 调用端不生效
如果提供方的接口经过测试是没问题的话. 消费方启动类加上@EnableFeignClients 注意定义的接口如果不和启动类在同一个包路径下,需要加basePackages 即:@EnableFeig ...
- Centos中查询目录中内容命名ls
首先解释下这块, root代表当前登录用户,localhost代表主机名, ~代表当前主机目录, #代表用户权限 #表示超级用户,$表示普通用户: 查询目录中内容命令 ls (list缩写) ...
- Linux 系统目录结构和常用指令
一.系统目录结构 /bin 经常使用的命令 /etc 所有系统管理所需的配置文件和子目录 /home 用户主目录 /usr 应用程序目录 /usr/bin 系统用户使用的应用程序 /usr/sbin ...
- SQL update select语句
SQL update select语句 最常用的update语法是:UPDATE <table_name>SET <column_name1> = <value>, ...
- appium----【Mac】address already in user 127.0.0.1:4725,端口被占用的查找与kill进程
报错截图示例: 解决方法: Mac: lsof -i tcp:4723 #查看端口号 sudo kill -9 29443 #杀死进程 Windows: netstat -aon|fi ...
- 2款适合HTML做音频和视频的插件
Flowplayer-视频播放器 Flowplayer 是一个开源(GPL 3的)WEB视频播放器.您可以将该播放器嵌入您的网页中,如果您是开发人员,您还可以自由定制和配置播放器相关参数以达到您要的播 ...