poj 3249 dp
来源:互联网 发布:软件评测师考试 编辑:程序博客网 时间:2024/06/05 16:09
#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <queue>using namespace std;const int M = 100005;const int MAX = 99999999;int dist[M];int rdu[M];int cdu[M];int value[M];vector<int>s[M];int n, m;int ans;void work() { queue<int>que; for(int i = 1; i <= n; i++) if(!rdu[i]) { que.push(i); dist[i] = value[i]; } while(!que.empty()) { int v = que.front(); que.pop(); for(int i = 0; i < (int)s[v].size(); i++) { int k = s[v][i]; dist[k] = max(dist[k], dist[v] + value[k]); rdu[k]--; if(!rdu[k]) que.push(k); } }}int main(){ int a, b; while(scanf("%d%d", &n, &m) != EOF) { for(int i = 1; i <= n; i++) { scanf("%d", &value[i]); s[i].clear(); dist[i] = -MAX; rdu[i] = 0; cdu[i] = 0; } for(int i = 0; i < m; i++) { scanf("%d%d", &a,&b); rdu[b]++; cdu[a]++; s[a].push_back(b); } work(); ans = -MAX; for(int i = 1; i <= n; i++) { if(!cdu[i]) ans = max(ans, dist[i]); } printf("%d\n", ans); } return 0;}
0 0
- poj 3249 dp
- poj 3249(DP+拓扑排序)
- poj dp
- 【dp】POJ
- 【dp】POJ
- [DP] POJ
- [DP] POJ
- [DP] POJ
- 【dp】POJ
- POJ 3249 拓扑排序+ 简单DP
- poj 3249 Test for Job (DP)
- poj--3249 Test for Job(topsort + dp)
- POJ 3670 && POJ 3671 (dp)
- 【DP】 POJ 1080
- poj 1163经典DP
- poj 1088 滑雪(DP)
- poj 1770 树形dp
- POJ 1179 Polygon(DP)
- hdu1213 How Many Tables
- ps 钢笔工具 路径 常用
- 也来看看智慧题
- 探索 Python 学习
- 剪刀石头布
- poj 3249 dp
- CppUnit在VS2010上的正确使用
- 二叉排序树(二叉查找树)
- 我的最近六年多的日子
- Yeelink平台推送传感器结果——套接字编程 Windows平台
- 构建根文件系统一之ubuntu12.04下安装编译BusyBox图文解说
- poj 3249 记忆化搜索
- 相册截取图片的URL
- 是打飞机的撒旦发