博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 6201【最长路+SPFA转化为流问题求解***】
阅读量:4653 次
发布时间:2019-06-09

本文共 1589 字,大约阅读时间需要 5 分钟。

题意: 给出一棵生成树,每个点有一个权值,代表商品的售价,树上每一条边上也有一个权值,代表从这条边经过所需要的花费。现在需要你在树上选择两个点,一个作为买入商品的点,一个作为卖出商品的点,当然需要考虑从买入点到卖出点经过边的花费。使得收益最大。允许买入点和卖出点重合,即收益最小值为0.

这个题不用树形DP也能求,实在是太巧妙。贴一个别人的解法

1195472-20180422110236790-131596440.png

#include
#include
#include
#include
#include
using namespace std;const int MAXN = 500010;const int INF = 2000;typedef struct node { int from; int to; int value; int next;}node;node edge[MAXN];int head[MAXN], cnt, n;int d[MAXN], vis[MAXN];void addedge(int from, int to, int value) { edge[cnt].from = from; edge[cnt].to = to; edge[cnt].value = value; edge[cnt].next = head[from]; head[from] = cnt++;}void spfa(int s, int e) { queue
mq; mq.push(s); vis[s] = 1; d[s] = 0; while (!mq.empty()) { int front = mq.front(); mq.pop(); vis[front] = 0; for (int i = head[front]; i != -1; i = edge[i].next) { int to = edge[i].to; int value = edge[i].value; if (d[to] < d[front] + value) { d[to] = d[front] + value; if (!vis[to]) { mq.push(to); vis[to] = 1; } } } }}int main(void) { int t; scanf("%d", &t); while (t--) { memset(head, -1, sizeof(head)); cnt = 0; scanf("%d", &n); int a, b, c; for (int i = 1; i <= n; i++) { scanf("%d", &b); addedge(0, i, -b); addedge(i, n + 1, b); } for (int i = 1; i <= n - 1; i++) { scanf("%d%d%d", &a, &b, &c); addedge(a, b, -c); addedge(b, a, -c); } memset(vis, 0, sizeof(vis)); for (int i = 0; i <= n + 1; i++) d[i] = -INF; spfa(0, n + 1); printf("%d\n", d[n + 1]); } return 0;}

转载于:https://www.cnblogs.com/tennant/p/8906093.html

你可能感兴趣的文章
docker学习(一)
查看>>
django.db.migrations.exceptions.InconsistentMigrationHistory django报错
查看>>
linux shell编程指南第十八章------控制流结构
查看>>
iOS设备信息
查看>>
<每日一题>题目12:列表解析及zip、dict函数的简单应用
查看>>
h5点击区域和实际区域对不上
查看>>
Box2D的三种Body类型
查看>>
SQL Server 下取中位数(中位值)的方法
查看>>
Using databases and Structured Query Language (SQL)
查看>>
网络对抗作业一
查看>>
路径规划效果图
查看>>
JAVA-注解规范
查看>>
Jmeter下进行ip伪造
查看>>
如何解决SQL Server 2008 无法连接到(local)
查看>>
mysql的数据结构
查看>>
【目标流畅阅读文献】kick off
查看>>
Python学习之路-26 Socket
查看>>
mysqldump不得不说的秘密
查看>>
优化Android Studio/Gradle构建(转)
查看>>
DDD领域模型数据访问权限之用户权限(十)
查看>>