Codeforces-721C:Journey(最短路上的DP)
来源:互联网 发布:cs鼠标垫推荐知乎 编辑:程序博客网 时间:2024/06/13 22:24
Recently Irina arrived to one of the most famous cities of Berland — the Berlatov city. There are n showplaces in the city, numbered from 1to n, and some of them are connected by one-directional roads. The roads in Berlatov are designed in a way such that there are no cyclic routes between showplaces.
Initially Irina stands at the showplace 1, and the endpoint of her journey is the showplace n. Naturally, Irina wants to visit as much showplaces as she can during her journey. However, Irina's stay in Berlatov is limited and she can't be there for more than T time units.
Help Irina determine how many showplaces she may visit during her journey from showplace 1 to showplace n within a time not exceeding T. It is guaranteed that there is at least one route from showplace 1 to showplace n such that Irina will spend no more than T time units passing it.
The first line of the input contains three integers n, m and T (2 ≤ n ≤ 5000, 1 ≤ m ≤ 5000, 1 ≤ T ≤ 109) — the number of showplaces, the number of roads between them and the time of Irina's stay in Berlatov respectively.
The next m lines describes roads in Berlatov. i-th of them contains 3 integers ui, vi, ti (1 ≤ ui, vi ≤ n, ui ≠ vi, 1 ≤ ti ≤ 109), meaning that there is a road starting from showplace ui and leading to showplace vi, and Irina spends ti time units to pass it. It is guaranteed that the roads do not form cyclic routes.
It is guaranteed, that there is at most one road between each pair of showplaces.
Print the single integer k (2 ≤ k ≤ n) — the maximum number of showplaces that Irina can visit during her journey from showplace 1 to showplace n within time not exceeding T, in the first line.
Print k distinct integers in the second line — indices of showplaces that Irina will visit on her route, in the order of encountering them.
If there are multiple answers, print any of them.
4 3 131 2 52 3 72 4 8
31 2 4
6 6 71 2 21 3 33 6 32 4 24 6 26 5 1
41 2 4 6
5 5 61 3 33 5 31 2 22 4 34 5 2
31 3 5
#include<bits/stdc++.h>using namespace std;const int MAX=5e3+10;struct EDG{ int to,next,t;}ed[2*MAX];int head[MAX],tot=0;int n,m,T;int pre[MAX][MAX];int d[MAX][MAX]; //开__int64好像会超内存void add(int x,int y,int t){ ed[tot].to=y; ed[tot].t=t; ed[tot].next=head[x]; head[x]=tot++;}void dfs(int k,int num){ if(pre[k][num]!=-1)dfs(pre[k][num],num-1); printf("%d ",k);}void slove(int k,int num){ for(int i=head[k];i!=-1;i=ed[i].next) { int nex=ed[i].to; if(d[k][num]+ed[i].t>T)continue; if(d[nex][num+1]==-1||d[nex][num+1]>d[k][num]+ed[i].t) { d[nex][num+1]=d[k][num]+ed[i].t; pre[nex][num+1]=k; slove(nex,num+1); } }}int main(){ cin>>n>>m>>T; memset(head,-1,sizeof head); memset(pre,-1,sizeof pre); while(m--) { int x,y; __int64 t; scanf("%d%d%I64d",&x,&y,&t); add(x,y,t); } memset(d,-1,sizeof d); d[1][1]=0; slove(1,1); for(int i=n;i>=2;i--) { if(d[n][i]!=-1&&d[n][i]<=T) { cout<<i<<endl; dfs(n,i); return 0; } }}
- Codeforces-721C:Journey(最短路上的DP)
- Codeforces 721C. Journey(DAG上的DP)
- CodeForces 721C Journey(DP)
- codeforces 721C. Journey(dp+拓扑)
- http://codeforces.com/contest/721/problem/C Journey(DAG上的dp)
- Codeforces #374(Div.2)C. Journey【DAG图上的拓扑排序+Dp】
- Codeforces Round #374 (Div. 2) C. Journey DPor最短路
- Codeforces 721C Journey (简单dp,dfs)
- codeforce 721C Journey (DAG上的dp)
- Codeforces Round #374 (Div. 2) 721C Journey DAG上DP
- Codeforces 721C. Journey
- Codeforces#374(div2)- C. Journey(二分答案+dp)
- Codeforces Round #374 (Div. 2) -- C. Journey (DP)
- Codeforces 839C Journey (树形dp + 概率期望)
- 【10.58%】【codeforces 721C】Journey
- codeforces 721 Journey (拓扑序+DP)
- 【Codeforces Round 374 (Div 2)C】【DAG上的DP】Journey 有向无环图从1到n时刻T内的最多经过点数
- 【POJ】3463 Sightseeing 最短路+比最短路大一的路(最短路 or 最短路+DP)
- chapter23 可靠性
- 来玩玩编程纸带打孔编程------最底层的编程
- 10月25号,关于数组的练习
- php中的动态变量含义及示例
- PHP 在字符串中查找字符串函数:strstr()、strchr()、strrchr()和stristr()
- Codeforces-721C:Journey(最短路上的DP)
- H264码流中SPS PPS详解
- JavaScript中引用类型,基本包装类型,基本类型的辨析
- chapter24 安全性
- VSCODE 配置C++运行环境
- QML 学习摘录 05
- 视觉slam14讲——第4讲 李群李代数
- 附录 Netty参数配置表
- Python Numpy 入门