http://codeforces.com/contest/721/problem/C

题目大意:给你有向路,每条路都有一个权值t,你从1走到n,最多花费不能超过T,问在T时间内最多能访问多少城市?

思路:dp确实好玩,然而我不会TAT

首先我们定义dp[i][j]表示从i走到n,途中经过j个城市所需要的花费。接下来就枚举拓扑序就好了

//看看会不会爆int!数组会不会少了一维!
//取物问题一定要小心先手胜利的条件
#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define ALL(a) a.begin(), a.end()
#define pb push_back
#define mk make_pair
#define fi first
#define se second
#define haha printf("haha\n")
const int maxn = + ;
vector<pair<int, int> > G[maxn];
int n, m, T;
bool vis[maxn];
int par[maxn][maxn], dp[maxn][maxn];
///定义从i走到n,经过j个地方所需要的最小时间花费 void dfs(int u){
vis[u] = true;
int len = G[u].size();
for (int i = ; i < len; i++){
pair<int, int> p = G[u][i];
int v = p.fi, val = p.se;
if (!vis[v]) dfs(v);
for (int j = ; j <= n; j++){
if (dp[u][j] > dp[v][j - ] + val){
dp[u][j] = dp[v][j - ] + val;
par[u][j] = v;
}
}
}
} int main(){
cin >> n >> m >> T;
memset(dp, 0x3f, sizeof(dp));
dp[n][] = ;
for (int i = ; i <= m; i++){
int u, v, val;
scanf("%d%d%d", &u, &v, &val);
G[u].pb(mk(v, val));
}
memset(par, -, sizeof(par));
dfs();
/*
for (int i = 1; i <= n; i++){
for (int j = 1; j <= n; j++){
///printf("%d ", dp[i][j]);
printf("%d ", par[i][j]);
}
printf("\n");
}
*/
for (int i = n; i >= ; i--){
if (dp[][i] <= T){
printf("%d\n", i);
for (int j = ; j != -; j = par[j][i], i--){
printf("%d ", j);
}
break;
}
}
return ;
}

最新文章

  1. 使用Mysql Workbench 画E-R图
  2. HuffmanTree的浅析和在C#中的算法实现
  3. 布局之按钮的图片分辨率--Android Studio
  4. Winform中DockPanel(引用WeifenLuo.WinFormsUI.Docking.dll组件)的使用
  5. 结合ItemsControl在Canvas中动态添加控件的最MVVM的方式
  6. uTenux&mdash;&mdash;HelloWord
  7. Apache,添加虚拟目录
  8. WebLogic启动时报错
  9. IOS的UITextField,UIButton,UIWebView它描述的一些属性和IOS提示图像资源
  10. linux命令类型及执行顺序
  11. Dom4J配合XPath解析schema约束的xml配置文件问题
  12. Scala面向对象详解
  13. C# 移除Response Header,403调整返回为404Make IIS return a 404 status code instead of 403
  14. 【Spring】SpringMVC之异常处理
  15. ThinkPHP Mongo驱动update方法支持upsert参数
  16. Python:字典操作总结
  17. 【WPF】RenderTransform和LayoutTransform
  18. Cognos权限Custom Java Provider表结构实例
  19. java------守护线程与非守护线程
  20. Python: 去掉字符串中的非数字(或非字母)字符

热门文章

  1. Mac MySQLdb模块安装,可算解决了
  2. 《JS权威指南学习总结--7.10 数组类型》
  3. qml 中 使用 shader
  4. jquery makearray()使用
  5. Java 泛型 泛型代码和虚拟机
  6. brctl 的使用
  7. HDU 1372 Knight Moves(BFS)
  8. FZU 1894 志愿者选拔 单调队列
  9. iOS应用性能调优的4个建议和技巧
  10. linux双线ip设置(不需额外增加路由表)