codeforces 721C (拓排 + DP)
来源:互联网 发布:linux vi esc 没反应 编辑:程序博客网 时间:2024/05/17 07:31
题目链接:http://codeforces.com/contest/721/problem/C
题意:从1走到n,问在时间T内最多经过多少个点,按路径顺序输出。
思路:比赛的时候只想到拓排然后就不知道怎么办了......先拓扑排序,再按照拓扑的顺序进行DP,dp[to][j](到i点走过j个点最短时间) = min(dp[to][j], dp[i][j] + dis)
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 5e3 + 3;const int inf = 0x3f3f3f3f;struct node{ int to; int dis; node() {} node(int a,int b) : to(a), dis(b) {}};vector <node> G[N];queue<int> q;int dp[N][N],pre[N][N],ans[N],deg[N];int main(){ int n,m,t,num; scanf("%d %d %d",&n,&m,&t); memset(dp,inf,sizeof(dp)); for(int i = 1; i <= m; i++) { int u,v,d; scanf("%d %d %d",&u,&v,&d); G[u].push_back(node(v,d)); deg[v]++; } dp[1][1] = 0; for(int i = 1; i <= n; i++) { if(!deg[i]) q.push(i); } while(!q.empty()) { int i = q.front(); q.pop(); for(int j = 0; j < G[i].size(); j++) { node tmp = G[i][j]; if(!--deg[tmp.to]) q.push(tmp.to); for(int k = 2; k <= n; k++) { if(dp[i][k-1] + tmp.dis < dp[tmp.to][k]) { dp[tmp.to][k] = dp[i][k-1] + tmp.dis; pre[tmp.to][k] = i; } } } } for(int i = n; i >= 1; i--) { if(dp[n][i] <= t) { num = i; break; } } ans[num] = n; for(int i = n,j = num; j > 1; i = pre[i][j], j--) ans[j-1] = pre[i][j]; printf("%d\n",num); for(int i = 1; i <= num; i++) printf("%d ",ans[i]); return 0;}
0 0
- codeforces 721C (拓排 + DP)
- CodeForces 721C Journey(DP)
- codeforces 721C. Journey(dp+拓扑)
- Codeforces 340E 错排问题dp
- Codeforces 721C. Journey(DAG上的DP)
- Codeforces 721C Journey (简单dp,dfs)
- Codeforces-721C:Journey(最短路上的DP)
- codeforces 721C 记忆化搜索 / dp
- codeforces 721C DAG上dp
- codeforces 13C Sequence(排序,DP)
- codeforces 601C(概率dp)
- Codeforces 545 C Woodcutters(贪心/DP)
- [CodeForces 279C] Ladder (DP)
- Codeforces 706C Hard problem (DP)
- codeforces 597C (树状数组+DP)
- Codeforces 708C Centroids(树形dp)
- codeforces 711C Coloring Trees(DP)
- CodeForces 456C - Boredom(DP)
- 快排求逆序数&快排与归并时间复杂度比较
- 同源策略与跨域解决方案
- MVC medoo数据类库
- Dialog对话框以及自定义Dialog
- 【Design Pattern】-----Facade
- codeforces 721C (拓排 + DP)
- java io系列05之 ObjectInputStream 和 ObjectOutputStream
- UVA 1212 - Duopoly(最小割)
- Codeforces 486B OR in Matrix【水题】
- 机房收费系统总结
- Android开发——View动画、帧动画和属性动画详解
- ubuntu14.04 + caffe安装
- 大数加法
- anglular 自定义指令scope =