P1073 最优贸易
#include <bits/stdc++.h>
using namespace std;
const int maxn = 100005;
int head1[maxn], head2[maxn], maxx[maxn], minn[maxn];
bool in1[maxn], in2[maxn];
int value[maxn];
int N, m, s;
struct edge
{
int to, next;
}es1[maxn], es2[maxn];
queue<int> q;
int num1 = 0, num2 = 0;
void link(int x, int y) {
num1++;
es1[num1].to = y;
es1[num1].next = head1[x];
head1[x] = num1;
num2++;
es2[num2].to = x;
es2[num2].next = head2[x];
head2[y] = num2;
}
void spfa1() {
memset(minn, 127, sizeof(minn));
minn[s] = value[s];
in1[s] = 1;
q.push(s);
while(!q.empty()) {
int x = q.front();
q.pop();
in1[x] =false;
for(int i = head1[x]; i != -1; i = es1[i].next) {
int n = es1[i].to;
if(minn[n] > minn[x] || value[n] < minn[n]) {
minn[n] = min(minn[x], value[n]);
if(in1[n] == 0) {
q.push(n);
in1[n] = true;
}
}
}
}
}
void spfa2() {
memset(maxx, -1, sizeof(maxx));
maxx[N] = value[N];
in2[N] = 1;
q.push(N);
while(!q.empty()) {
int x = q.front();
q.pop();
in2[x] =false;
for(int i = head2[x]; i != -1; i = es2[i].next) {
int n = es2[i].to;
if(maxx[n] < maxx[x] || value[n] > maxx[n]) {
maxx[n] = max(maxx[x], value[n]);
if(in2[n] == 0) {
q.push(n);
in2[n] = true;
}
}
}
}
}
int main() {
// freopen("input.in", "r", stdin);
memset(head1, -1, sizeof(head1));
memset(head2, -1, sizeof(head2));
memset(in1, 0, sizeof(in1));memset(in2, 0, sizeof(in2));
cin >> N >> m;
s = 1;
for(int i = 1; i <= N; i++) cin >> value[i];
for(int i = 1; i <= m; i++) {
int x, y, z;
cin >> x >> y >> z;
link(x, y);
if(z == 2) link(y, x);
}
spfa1();
spfa2();
int ans = 0;
for(int i = 1; i <= N; i++) {
ans = max(maxx[i]-minn[i], ans);
}
cout << ans;
}
明白了一个道理:spfa不仅仅能求最短路啊!
以后要记住,如果要求求一条路上的某个值,可以考虑用spfa
P1073 最优贸易的更多相关文章
- 洛谷 P1073 最优贸易 解题报告
P1073 最优贸易 题目描述 \(C\)国有\(n\)个大城市和\(m\)条道路,每条道路连接这\(n\)个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这\(m\)条道路中有一部分 ...
- 洛谷P1073 最优贸易==codevs1173 最优贸易
P1073 最优贸易 题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一 ...
- 洛谷——P1073 最优贸易
P1073 最优贸易 n 个城市间以 m 条有向道路连接, 小 T 从 1 号城市出发, 将要去往 n 号城市.小 T 观察到一款商品 Z 在不同的城市的价格可能不尽相同,小 T 想要在旅行中的某一个 ...
- P1073 最优贸易 建立分层图 + spfa
P1073 最优贸易:https://www.luogu.org/problemnew/show/P1073 题意: 有n个城市,每个城市对A商品有不同的定价,问从1号城市走到n号城市可以最多赚多少差 ...
- Luogu P1073 最优贸易(最短路)
P1073 最优贸易 题意 题目描述 \(C\)国有\(n\)个大城市和\(m\)条道路,每条道路连接这\(n\)个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这\(m\)条道路中有 ...
- 洛谷 P1073 最优贸易 最短路+SPFA算法
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 题面 题目链接 P1073 最优贸易 题目描述 C国有 $ n $ 个大城市和 ...
- P1073 最优贸易 分层图+最长路
洛谷p1073 最优贸易 链接 首先易得暴n2的暴力,暴力枚举就行 显然1e5的数据是会炸的 我们再分析题意,发现一共分为两个个步骤,也可以说是状态,即在一个点买入,在另一个点卖出,我们可以构建一个三 ...
- 洛谷P1073 最优贸易 [图论,DP]
题目传送门 最优贸易 题目描述 C 国有n 个大城市和m 条道路,每条道路连接这n 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这m 条道路中有一部分为单向通行的道路,一部分为双向 ...
- Luogu P1073 最优贸易
题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双 ...
- [NOIP2009] 提高组 洛谷P1073 最优贸易
题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分 为双向通行的道路 ...
随机推荐
- three.js透视投影照相机
透视投影照相机(Perspective Camera)的构造函数是: THREE.PerspectiveCamera(fov, aspect, near, far) 让我们通过一张透视照相机投影的图来 ...
- 安装和配置Tomcat
今天第一个技术难题,说难也不难,被鄙视的彻彻底底. 理解上的问题纠正:Xftp里面我们看到的只是自己电脑上和所连接服务器里面的文件,集群里面有master 服务器和slaves 服务器 ,一个Nam ...
- java基础-表达式,语句和代码块
浏览以下内容前,请点击并阅读 声明 表达式 表达式由变量,操作符和方法调用组成,表达式的返回值类型由表达式中的元素(如操作符,变量等)决定如: cadence = 0 上述代码将返回一个int类型的值 ...
- Visual Studio蛋疼问题解决
监视变量显示未定义标识符: VS2012在编译的时候采用了较快的编译模式,所以有些变量就显示未定义了. 解决方案: 项目->属性->c/c++->优化->改为禁用/OD ...
- Gulp探究折腾之路(I)2
文/晚晴幽草(简书作者)原文链接:http://www.jianshu.com/p/9768a4dc7cf7著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 前言: gulp是前端开发过 ...
- hdu1710 Binary Tree Traversals(二叉树的遍历)
A binary tree is a finite set of vertices that is either empty or consists of a root r and two disjo ...
- ACM 寻找最大数
寻找最大数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...
- 【BZOJ2242】【SDoi2011】计算器 快速幂+EXGCD+BSGS
Description 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给 ...
- 彩色照片转换为黑白照片(Color image converted to black and white picture)
This blog will be talking about the color image converted to black and white picture. The project st ...
- 集成IOS 环信SDK
集成IOS SDK 在您阅读此文档时,我们假定您已经具备了基础的 iOS 应用开发经验,并能够理解相关基础概念. 下载SDK 通过Cocoapods下载地址 不包含实时语音版本SDK(EaseMobC ...