time limit per test3 seconds

memory limit per test256 megabytes

inputstandard input

outputstandard output

Recently Irina arrived to one of the most famous cities of Berland — the Berlatov city. There are n showplaces in the city, numbered from 1 to 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.

Input

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.

Output

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.

Examples

input

4 3 13

1 2 5

2 3 7

2 4 8

output

3

1 2 4

input

6 6 7

1 2 2

1 3 3

3 6 3

2 4 2

4 6 2

6 5 1

output

4

1 2 4 6

input

5 5 6

1 3 3

3 5 3

1 2 2

2 4 3

4 5 2

output

3

1 3 5

【题解】



记忆化搜搜。

设f[i][j]表示到达i这个点时,已经走过j个点所花费的最少时间。

用这个来做记忆化搜索即可。

从1号节点开始。

f初始化为一个很大的数。

输出方案的技巧可以膜拜一下。

#include <cstdio>
#include <cstring>
#include <vector>
#include <cstdlib> using namespace std; const int MAXN = 5500;
const long long INF = 1e15; int n, m, ans = 0, xulie[MAXN], num = 0;
long long t;
long long f[MAXN][MAXN];
vector <int> a[MAXN];
vector <long long> w[MAXN];
bool oa = false; bool dfs(int x, int num, long long cost)//把dfs设置为一个bool型,用于判断是否到达了n号节点且更新了答案。
{
if (f[x][num] <= cost)
return false;//如果没有比原来的优就不用继续搜了。
f[x][num] = cost;
if (x == n)
{
if (cost <= t && num > ans)
{
ans = num;
xulie[num] = x;
return true;
}
return false;
}
bool can = false;
int len = a[x].size();
for (int i = 0; i <= len - 1; i++)
{
int y = a[x][i];
if (dfs(y, num + 1, cost + w[x][i]))
{
xulie[num] = x;
can = true;
}
}
return can;
} int main()
{
//freopen("F:\\rush.txt", "r", stdin);
scanf("%d%d%I64d", &n, &m, &t);
for (int i = 1; i <= m; i++)
{
int x, y;
long long z;
scanf("%d%d%I64d", &x, &y, &z);
a[x].push_back(y);
w[x].push_back(z);
}
memset(f, 127 / 3, sizeof(f));
int len = a[1].size();
xulie[1] = 1;
for (int i = 0; i <= len - 1; i++)
{
int y = a[1][i];
dfs(y, 2, w[1][i]);
}
printf("%d\n", ans);
for (int i = 1; i <= ans - 1; i++)
printf("%d ", xulie[i]);
printf("%d\n", xulie[ans]);
return 0;
}

【10.58%】【codeforces 721C】Journey的更多相关文章

  1. .NET周报【10月第2期 2022-10-17】

    主题 宣布 .NET 7 发布候选版本 2 - .NET Blog https://devblogs.microsoft.com/dotnet/announcing-dotnet-7-rc-2/ .N ...

  2. .NET周报【10月第1期 2022-10-11】

    本周精选 继C#实现await/async无栈协程几年后,davidwrighton实现了.NET绿色线程(有栈协程)的原型 https://github.com/dotnet/runtimelab/ ...

  3. .NET周报【10月第3期 2022-10-25】

    国内文章 聊一聊被 .NET程序员 遗忘的 COM 组件 https://www.cnblogs.com/huangxincheng/p/16799234.html 将Windows编程中经典的COM ...

  4. 【 BowWow and the Timetable CodeForces - 1204A 】【思维】

    题目链接 可以发现 十进制4 对应 二进制100 十进制16 对应 二进制10000 十进制64 对应 二进制1000000 可以发现每多两个零,4的次幂就增加1. 用string读入题目给定的二进制 ...

  5. codeforces 721C C. Journey(dp)

    题目链接: C. Journey time limit per test 3 seconds memory limit per test 256 megabytes input standard in ...

  6. 【33.10%】【codeforces 604C】Alternative Thinking

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  7. 【21.58%】【codeforces 746D】Green and Black Tea

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  8. 【58.33%】【codeforces 747B】Mammoth's Genome Decoding

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  9. 【codeforces 415D】Mashmokh and ACM(普通dp)

    [codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...

随机推荐

  1. Windows 7 系统的旧版IE浏览器升级到IE11

    Windows 7 系统的旧版IE浏览器升级到IE11 2016年1月12日微软全面停止对IE8.IE9.IE10浏览器的支持,不再提供安全服务,如果继续使用将会造成安全隐患,因此 Windows 7 ...

  2. scrollBarStyle- listview滑动条调整

    今天在解决问题的时候,需要设置listview滚动条,使listview的内容不能被滚动条覆盖 后来发现网上提到一个 ScrollView 属性.ScrollView中ScrollBar的style ...

  3. List-ArrayList 使用

    今天优化一段代码,如下 int num = 0; boolean skipAppend = false; int types_ext1[] = new int[] { ModuleType.TYPE_ ...

  4. affix附加导航插件

    <style> a:focus { outline: none; } .nav-pills { width: 150px; } .nav-pills.affix { top : 10px; ...

  5. 1.字符设备驱动------Linux中断处理体系结构

    一.中断处理体系结构的初始化 Linux内核将所有的中断统一编号,使用一个irq_desc结构数组来描述这些中断;每个数组项对应一个中断,也可能是一组中断,它们共用相同的中断号,里面记录了中断的名称. ...

  6. DTU(用于将串口数据转换为IP数据或将IP数据转换为串口数据通过无线通信网络进行传送的无线终端设备)

    DTU (Data Transfer unit),是专门用于将串口数据转换为IP数据或将IP数据转换为串口数据通过无线通信网络进行传送的无线终端设备.DTU广泛应用于气象.水文水利.地质等行业.

  7. Excel 下拉菜单制作

    废话少说吧,以图明示: 图1 操作步骤(环境为Office 2013) 备注,第四步,可以选择页面中的数据源,也可以以“,”分割的方式输入字符串 图2 制作效果

  8. ajax 通过return 返回data值

    方法例如以下: 1. ajax 必须为同步 设置async:false 2. 定一个局部变量 把data赋值给局部变量 然后 return 局部变量就可以 示比例如以下 function getEmp ...

  9. SQL_wm_concat函数实验:实现字段合并

    原创作品,出自 "深蓝的blog" 博客.欢迎转载.转载时请务必注明下面出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlo ...

  10. js进阶 13-5 jquery队列动画如何实现

    js进阶 13-5 jquery队列动画如何实现 一.总结 一句话总结:同一个jquery对象,直接写多个animate()就好. 1.什么是队列动画? 比如说先左再下,而不是左下一起走 2.怎么实现 ...