CF374 Journey
技不如人甘拜下风
这题网上说法有 建反向边和先拓扑
都是为了每个点之前将其前驱都遍历到
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 5005;
const int INF = 0x3f3f3f3f;
int N,M,T;
vector<pair<int,int> > mp[MAXN];
ll dp[MAXN][MAXN];
int vis[MAXN];
int ans;
vector<int> op;
void dfs(int x) {
if(vis[x]) return;
for(int i = 0; i < (int)mp[x].size(); ++i) {
int y = mp[x][i].first;
if(!vis[y]) dfs(y);
}
for(int i = 0; i < (int)mp[x].size(); ++i) {
int y = mp[x][i].first; int z = mp[x][i].second;
for(int j = 1; j <= N; ++j) {
if( dp[x][j] > dp[y][j-1]+z ) {
dp[x][j] = dp[y][j-1]+z;
if(x==N && j > ans && dp[x][j] <= T) ans = j;
}
}
}
vis[x] = 1;
}
void re_dfs(int x,int num) {
op.push_back(x);
for(int i = 0; i < (int)mp[x].size(); ++i) {
int y = mp[x][i].first; int z = mp[x][i].second;
if(dp[x][num] == dp[y][num-1]+z){
re_dfs(y,num-1);
return;
}
}
}
int main(){
while(~scanf("%d %d %d",&N,&M,&T)) {
ans = 0; op.clear();
memset(vis,0,sizeof(vis));
memset(dp,INF,sizeof(dp));
for(int i = 1; i <= N; ++i) mp[i].clear();
for(int i = 1; i <= M; ++i) {
int a,b,c; scanf("%d %d %d",&a,&b,&c);
mp[b].push_back({a,c});
}
dp[1][1] = 0;
dfs(N);
re_dfs(N,ans);
printf("%d\n",ans);
for(int i = (int)op.size()-1; i >= 0; --i) {
printf("%d ",op[i]);
} printf("\n");
}
return 0;
}
CF374 Journey的更多相关文章
- CF721C. Journey[DP DAG]
C. Journey time limit per test 3 seconds memory limit per test 256 megabytes input standard input ou ...
- POJ2488A Knight's Journey[DFS]
A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 41936 Accepted: 14 ...
- CF #374 (Div. 2) C. Journey dp
1.CF #374 (Div. 2) C. Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ...
- POJ2488-A Knight's Journey(DFS+回溯)
题目链接:http://poj.org/problem?id=2488 A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Tot ...
- codeforces 721C C. Journey(dp)
题目链接: C. Journey time limit per test 3 seconds memory limit per test 256 megabytes input standard in ...
- A Knight's Journey 分类: POJ 搜索 2015-08-08 07:32 2人阅读 评论(0) 收藏
A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 35564 Accepted: 12119 ...
- HDOJ-三部曲一(搜索、数学)- A Knight's Journey
A Knight's Journey Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) ...
- 【推公式】UVa 10995 - Educational Journey
1A~,但后来看人家的代码好像又写臭了,T^T... Problem A: Educational journey The University of Calgary team qualified f ...
- poj 3544 Journey with Pigs
Journey with Pigs Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3004 Accepted: 922 ...
随机推荐
- 最大流模版 dinic
朴素dinic+多路增广 #include <iostream> #include <cstdio> #include <cstring> #include < ...
- BZOJ 3744: Gty的妹子序列 [分块]
传送门 题意:询问区间内逆序对数 感觉这种题都成套路题了 两个预处理$f[i][j]$块i到j的逆序对数,$s[i][j]$前i块$\le j$的有多少个 f我直接处理成到元素j,方便一点 用个树状数 ...
- HDU 3595 GG and MM [Every-SG]
传送门 题意: 两个数$x,y$,一个人的决策为让大数减去小数的任意倍数(结果不能为负),出现0的人胜 一堆这样的游戏同时玩 Every-SG 游戏规定,对于还没有结束的单一游戏,游戏者必须对该游戏进 ...
- POJ 3608 Bridge Across Islands [旋转卡壳]
Bridge Across Islands Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10455 Accepted: ...
- struct stat结构体简介
在使用这个结构体和方法时,需要引入: <sys/types.h> <sys/stat.h> struct stat这个结构体是用来描述一个linux系统文件系统中的文件属性的结 ...
- ionic2+Angular 依赖注入之Subject ——使用Subject来实现组件之间的通信
在Angular+ionic2 开发过程中,我们不难发现,页面之间跳转之后返回时是不会刷新数据的. 场景一:当前页面需要登录之后才能获取数据--去登录,登录成功之后返回--页面需要手动刷新才能获取到数 ...
- Python数据分析学习-re正则表达式模块
正则表达式 为高级的文本模式匹配.抽取.与/或文本形式的搜索和替换功能提供了基础.简单地说,正则表达式(简称为 regex)是一些由字符和特殊符号组成的字符串,它们描述了模式的重复或者表述多个字符,于 ...
- 2017年 Java 程序员,风光背后的危机
不得不承认,经历过行业的飞速发展期,互联网的整体发展趋于平稳.为什么这么说?为什么要放在 Java 程序员的盘点下说? 的确,对于进可攻前端,后可守后端大本营的 Java 程序员而言,虽然供应逐年上涨 ...
- Linux常用命令详解(二) -- 查找常用命令
locate: 作用:在后台数据库中按文件名搜索,搜索速度更快 命令格式:locate 文件名 选项或参数: -l num(要显示的行数) ...
- ubuntu终端常用命令及solarized配色(护眼)
ubuntu终端常用命令及solarized配色(护眼) ubuntu 终端 命令 1.常用命令 ctrl + l - 清屏 . cLear ctrl + c - 终止命令. ctrl + d ...