HDU 6201 transaction transaction transaction (Dijstra, 2017 ACM/ICPC Asia Regional Shenyang Online)
来源:互联网 发布:网络诈骗案例大全 编辑:程序博客网 时间:2024/06/05 17:05
Problem
给 n 个城市买卖书的价格 x y z
,表示 x 与 y 城市道路的长度为 z 。每前进 1 km 的代价为 1 。求从一个城市买 1 本书再带到另一个城市卖出的最大收益。
Idea
多源最短路加超级源点 转化为 单源最短路。貌似这种题队友总喜欢拿网络流去套… 233.
从超级源点向每个城市 i 连一条边权为
遍历 n 个点,将最短路与
Code
#include<bits/stdc++.h>using namespace std;const int N = 100000 + 10;int T, n, pi[N];long long dis[N];struct Edge { int nxt, to, val;} e[N*2];int head[N], cnt;void addedge(int u, int v, int w) { e[++cnt].nxt = head[u]; e[cnt].to = v; e[cnt].val = w; head[u] = cnt;}struct Node { int idx; long long dist;} p, q;bool operator<(Node a, Node b) { return a.dist > b.dist;}void dijstra() { priority_queue<Node> que; for(int i=1;i<=n;i++) { p.idx = i; p.dist = pi[i]; que.push(p); dis[i] = pi[i]; } while(!que.empty()) { p = que.top(); que.pop(); if(dis[p.idx] < p.dist) continue; for(int i=head[p.idx];i;i=e[i].nxt) { q.idx = e[i].to; q.dist = p.dist + e[i].val; if(dis[q.idx] < q.dist) continue; dis[q.idx] = q.dist; que.push(q); } }}int main(){ scanf("%d", &T); while(T-- && scanf("%d", &n)!=EOF) { cnt = 0; memset(head, 0, sizeof(head)); for(int i=1;i<=n;i++) scanf("%d", &pi[i]); for(int i=1, u, v, w;i<n;i++) { scanf("%d %d %d", &u, &v, &w); addedge(u, v, w); addedge(v, u, w); } dijstra(); long long ans = 0; for(int i=1;i<=n;i++) ans = max(ans, pi[i] - dis[i]); printf("%lld\n", ans); }}
阅读全文
0 0
- HDU 6201 transaction transaction transaction (Dijstra, 2017 ACM/ICPC Asia Regional Shenyang Online)
- 2017 ACM/ICPC Asia Regional Shenyang Online:transaction transaction transaction
- HDU-2017 ACM/ICPC Asia Regional Shenyang Online-1008-transaction transaction transaction
- 2017 ACM/ICPC Asia Regional Shenyang transaction transaction transaction
- 2017 ACM/ICPC Asia Regional Shenyang Online transaction
- 2017 ACM/ICPC Asia Regional Shenyang Online 1008 transaction transaction transaction
- HDU-2017 ACM/ICPC Asia Regional Shenyang Online-签到题
- 2017 ACM/ICPC Asia Regional Shenyang Online 1001(hdu 6194)
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional shenyang Online
- HDU 6199 gems gems gems (DP, 2017 ACM/ICPC Asia Regional Shenyang Online)
- HDU 6203 ping ping ping (LCA + 树状数组, 2017 ACM/ICPC Asia Regional Shenyang Online)
- MXNET笔记(一)基本流程
- Targe Lock
- JS和jquery获取各种屏幕的宽度和高度的代码
- 《Java源码分析》:HashSet
- 第一次知道有拆白这种行业
- HDU 6201 transaction transaction transaction (Dijstra, 2017 ACM/ICPC Asia Regional Shenyang Online)
- react-native demo
- Leetcode 202 Happy Number
- windows 获取当前进程所占内存
- 推荐一款http调试工具抓包charles
- MATLAB如何提取矩阵的子块
- OpenGL初学:安装配置与第一个程序
- 《Java源码分析》:LinkedHashSet
- MXNET笔记(二)准备数据