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 静态和动态库

    c++中共有两种库:1.动态链接库LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library.(这 ...

  2. python 新模块或者包的安装方法

    主要介绍通过pip自动工具来安装需要的包. 1,先安装pip 下载pip的包(包括setup.py文件) cmd载入到pip本地文件所在路径,使用命令进行安装. python setup.py ins ...

  3. 【Codeforces Round #455 (Div. 2) A】Generate Login

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 枚举两个串的前缀长度就好. 组出来. 排序. 取字典序最小的那个. [代码] #include <bits/stdc++.h& ...

  4. l洛谷 P3926 SAC E#1 - 一道不可做题 Jelly

    P3926 SAC E#1 - 一道不可做题 Jelly 题目背景 SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友. 题目描述 SOL君很喜欢吃蒟蒻果冻.而SOL菌也很喜欢蒟蒻果冻. 有一 ...

  5. 1.1 Introduction中 Kafka as a Messaging System官网剖析(博主推荐)

    不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ Kafka as a Messaging System kafka作为一个消息系统 ...

  6. python序列中是否包含某个元素

    http://outofmemory.cn/code-snippet/9098/python-list-contains-with-in-not-in theList = ['a','b','c'] ...

  7. 前台Ajax发送数据给后台

    前台发ajax请求给后台 前台代码 let data= [{receiveAdd:receiveAddVal, sendAdd:sendAddVal,distance:distance,goodsNa ...

  8. scrapy--介绍

    ​ Scrapy一个开源和协作的框架,其最初是为了页面抓取所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可用于如数据挖掘.监测和自动化测试等领 ...

  9. BZOJ——T2190: [SDOI2008]仪仗队

    Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 3216  Solved: 2075[Submit][Status][Discuss] http://w ...

  10. 驱动学习2-Menuconfig与Kconfig

    Menuconfig: 执行make Menuconfig命令是为了产生.config文件 Kconfig: Kconfig中的指令可以改变Menuconfig图形界面中的东西,例如假如leds控制选 ...