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 ...
随机推荐
- codechef Dynamic GCD [树链剖分 gcd]
Dynamic GCD 题意:一棵树,字词树链加,树链gcd 根据\(gcd(a,b)=gcd(a,a-b)\) 得到\(gcd(a_1, a_2, ..., a_i) = gcd(a_1, a_1- ...
- BZOJ 2463: [中山市选2009]谁能赢呢?[智慧]
明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能移 ...
- C# 使用GDI制作垂直进度条(由下往上)
使用GDI+绘进度条的方式多种多样,可以封装一个UserControl,也可以直接使用一个控件来绘制(Label.Image.Panel等),甚至可以直接在winForm上画一个,关键代码没几行(这里 ...
- 百度地图api 区级以下行政区划
我们在使用百度地图api想要展示苏州市吴中区各乡镇的行政区范围: 百度api有提供了“添加行政区划”的示例:http://lbsyun.baidu.com/jsdemo.htm#c1_10 但该功能目 ...
- php与web页面交互(二)
一.获取表单数据 1.1 使用POST()方法提交表单 ---POST()方法可以没有限制地传递数据到服务器,所提交的数据在后台传输,用户在浏览器端是看不到这一过程的,安全性高,适用于发送保密数据和 ...
- 解决无法make uImage的问题
进入一个uboot目录, 执行make distclean make at91sam9260ek_config make ARCH=arm CROSS_COMPILE=arm-linux- cp to ...
- mysql必知必会
春节放假没事,找了本电子书mysql必知必会敲了下.用的工具是有道笔记的markdown文档类型. 下面是根据大纲已经敲完的章节,可复制到有道笔记的查看,更美观. # 第一章 了解SQL## 什么是S ...
- 使用 Homebrew 安装 Git
3.2.3 使用 Homebrew 安装 Git 2011-07-27 08:52 蒋鑫 机械工业出版社 字号:T | T 综合评级: 想读(13) 在读(6) 已读(8) 品书斋鉴(1) ...
- Windows 桌面和文件夹的右键->打开命令行窗口
Windows 桌面和文件夹的右键->打开命令行窗口 1.先按下shift,再点鼠标右键运行CMD,(不是管理员权限) 上图是我已经加了右键的,并且 系统设置了 ps代替cmd,所以是“在此处 ...
- [转]用JavaScript在浏览器中创建下载文件
前端很多项目中,都有文件下载的需求,特别是JS生成文件内容,然后让浏览器执行下载操作(例如在线图片编辑.在线代码编辑.iPresst等. 但受限于浏览器,很多情况下我们都只能给出个链接,让用户点击打开 ...