http://swjtuoj.cn/problem/2387/

设dp[cur]表示以cur这个节点为起点的时候,能走的最大贡献。

题目保证没环,也就是没回路。

感觉和树dp差不多了。

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <assert.h>
#define IOS ios::sync_with_stdio(false)
using namespace std;
#define inf (0x3f3f3f3f)
typedef long long int LL;#include <iostream>
#include <sstream>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <string>
#include <bitset>
const int maxn = 2000 + 20;
struct Node {int u, v, w;int tonext;
}e[maxn * maxn];
int first[maxn], num;
void add(int u, int v, int w) {++num;e[num].u = u, e[num].v = v, e[num].w = w;e[num].tonext = first[u];first[u] = num;
}
int vis[maxn], dp[maxn], DFN;
int dfs(int cur) {if (vis[cur] == DFN) return dp[cur];vis[cur] = DFN;int res = 0;for (int i = first[cur]; i; i = e[i].tonext) {int v = e[i].v;res = max(res, dfs(v) + e[i].w);}return dp[cur] = res;
}
void work() {memset(first, 0, sizeof first);int n, m;scanf("%d%d", &n, &m);for (int i = 1; i <= m; ++i) {int u, v, w;scanf("%d%d%d", &u, &v, &w);u++;v++;add(u, v, w);}++DFN;int ans = 0;memset(dp, 0, sizeof dp);for (int i = 1; i <= n; ++i) {if (vis[i] == DFN) continue;dp[i] = dfs(i);}for (int i = 1; i <= n; ++i) ans = max(ans, dp[i]);printf("%d\n", ans);
}int main() {
#ifdef localfreopen("data.txt", "r", stdin);
//    freopen("data.txt", "w", stdout);
#endifint t;scanf("%d", &t);while (t--) work();return 0;
}

View Code

转载于:https://www.cnblogs.com/liuweimingcprogram/p/6858440.html

Magic Maze dfs + dp相关推荐

  1. 记忆化搜索(DFS+DP) URAL 1223 Chernobyl’ Eagle on a Roof

    题目传送门 1 /* 2 记忆化搜索(DFS+DP):dp[x][y] 表示x个蛋,在y楼扔后所需要的实验次数 3 ans = min (ans, max (dp[x][y-i], dp[x-1][i ...

  2. 滑雪问题(dfs+dp)

    滑雪问题(dfs+dp) 题目引入 佑少喜欢上网冲浪.最近他在贴吧得知滑铲可以消灭老虎,于是决定每天都到山坡上练习滑铲.不过佑少还没学会反重力滑铲,所以滑的区域必须向下倾斜,而且当滑到坡底,他不得不再 ...

  3. CodeForces - 628D Magic Numbers(数位dp)

    题目链接:点击查看 题目大意:首先规定一个不含前导零的数字如果满足: 从最高位开始,偶数位置全为 ddd 从最高位开始,奇数位置不能出现 ddd 则称该数字为 d−magicd-magicd−magi ...

  4. Educational Codeforces Round 8 D. Magic Numbers 数位DP

    D. Magic Numbers 题目连接: http://www.codeforces.com/contest/628/problem/D Description Consider the deci ...

  5. codevs 1066 引水入城(DFS+DP)

    codevs 1066 引水入城 题目描述 Description 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政 区划十分特殊,刚好构成一个N行M列的矩形,如上图所示, ...

  6. HDU - 4035 Maze(概率dp)

    题目链接:点击查看 题目大意:给出一个 n 个点的树,初始时位于点 1 ,每个点都会给出一个概率 k[ i ] 和一个概率 e[ i ] ,其代表的意义分别是: k[ i ] :在点 i 有 k[ i ...

  7. NYOJ10: skiing(DFS + DP)

    skiing 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑 ...

  8. Codeforces Round #635 (Div. 1) C. Kaavi and Magic Spell 区间dp

    传送门 文章目录 题意: 思路: 题意: 给你两个串s,ts,ts,t,每次都可以从sss的开头拿一个字符放到AAA串的开头或结尾,问最终有多少种方案使得ttt是AAA的前缀,注意sss不必全部拿完. ...

  9. (DFS+DP)滑雪(poj1088)

    题目 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道载一个区域中最长底 ...

最新文章

  1. php数据 文本_php直接调用文本文件内容
  2. 8、Kubernetes核心技术Service
  3. 硬件——STM32,GPIO篇
  4. 开发Teams的messaging extension
  5. Producer向Broker发送心跳的作用-知识点
  6. python练手经典100例-【Python精华】100个Python练手小程序
  7. python探测端口_Python实现端口检测
  8. Python语言应该加上块标识(开始、结束)的特性
  9. QuartZ 配置第一次不执行后续正常执行
  10. html怎么做卫星图地址,如何基于卫星地图制作矢量化电子地图
  11. Teradata天睿公司发布开源Kylo软件
  12. 【操作系统】-- 进程同步、信号量机制(整型信号量、记录型信号量、PV操作)
  13. ZStack基本工作原理
  14. php 中文逗号 转英文,PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式...
  15. DevOps - (1)Terraform+阿里云实现云资源的CI/CD
  16. 14个小方法巧除鞋臭脚臭
  17. 一起来毕设(一)构思
  18. 钉钉——阿里“打入”产业互联网的尖兵连
  19. 【笔记:JavaWeb】
  20. PHP 作业2.2 商品价格计算

热门文章

  1. Python的Request请求跳过认证及禁用警告
  2. ⑥NuPlayer播放源码分析之DecoderBase分析
  3. bzoj1500: [NOI2005]维修数列
  4. 一起学Windows Phone 7开发(九.Windows Phone Developer Tools Beta)
  5. java实现arp断网攻击,可攻击局域网内所有的主机
  6. ide中tomcat乱码_idea tomcat 乱码问题的解决及相关设置
  7. Linux策略路由--原理、配置和应用
  8. 关于FPGA核心bug解决
  9. (93)异步FIFO结构,为什么用格雷码? ,面试必问(十七)(第19天)
  10. c++ vector排序_个性化推荐系统源代码之基于LR模型的推荐系统离线排序方案