洛谷——P1073 最优贸易
P1073 最优贸易
n 个城市间以 m 条有向道路连接, 小 T 从 1 号城市出发, 将
要去往 n 号城市.
小 T 观察到一款商品 Z 在不同的城市的价格可能不尽相同,
小 T 想要在旅行中的某一个城市购买一件商品 Z, 在另一个
城市卖出. 因为旅途劳顿, 这种买卖小 T 只打算做一次.
请问小 T 能够获得的最大收益是多少?
求点$1$到所有点的最小值,再从$n$出发判断所能够到达,取最大值即可
更新最小值方法与spfa类似
#include<bits/stdc++.h> #define N 1010101
using namespace std; int d[N],n,head[N],tot,phead[N],w[N],m,ans,tpt,dd[N];
struct node {
int to,next;
} e[N],p[N];
void add(int u,int v) {
e[++tot].to=v,e[tot].next=head[u],head[u]=tot;
}
void padd(int u,int v){
p[++tpt].to=v,p[tpt].next=phead[u],phead[u]=tpt;
} queue<int>Q;
bool vis[N];
void spfa() {
memset(vis,,sizeof(vis));
memset(d,0x7f,sizeof(d));
Q.push();vis[]=;
while(!Q.empty()){
int u=Q.front();Q.pop();vis[u]=;
for(int i=head[u];i;i=e[i].next){
int v=e[i].to,minn=min(d[u],w[u]);
if(minn<d[v]){
d[v]=minn;
if(!vis[v]){
Q.push(v);
vis[v]=;
}
}
}
}
} void sspfa(){
memset(vis,,sizeof(vis));
memset(dd,0x7f,sizeof(dd));
Q.push(n);vis[n]=,dd[n]=;
while(!Q.empty()){
int u=Q.front();Q.pop();vis[u]=;
for(int i=phead[u];i;i=p[i].next){
int v=p[i].to;
if(dd[v]>dd[u]+){
dd[v]=dd[u]+;
if(!vis[v]){
Q.push(v);
vis[v]=;
}
}
}
}
} int main() {
scanf("%d%d",&n,&m);
for(int i=; i<=n; i++) scanf("%d",&w[i]);
for(int x,y,z,i=; i<=m; i++) {
scanf("%d%d%d",&x,&y,&z);
if(z==) add(y,x);
add(x,y);
if(z==) padd(x,y);
padd(y,x);
}
spfa();
sspfa();
for(int i=;i<=n;i++){
if(dd[i]<dd[])
ans=max(ans,w[i]-d[i]);
}
printf("%d\n",ans);
return ;
}
洛谷——P1073 最优贸易的更多相关文章
- 洛谷 P1073 最优贸易 解题报告
P1073 最优贸易 题目描述 \(C\)国有\(n\)个大城市和\(m\)条道路,每条道路连接这\(n\)个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这\(m\)条道路中有一部分 ...
- 洛谷P1073 最优贸易==codevs1173 最优贸易
P1073 最优贸易 题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一 ...
- 洛谷 P1073 最优贸易 最短路+SPFA算法
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 题面 题目链接 P1073 最优贸易 题目描述 C国有 $ n $ 个大城市和 ...
- 洛谷P1073 最优贸易 [图论,DP]
题目传送门 最优贸易 题目描述 C 国有n 个大城市和m 条道路,每条道路连接这n 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这m 条道路中有一部分为单向通行的道路,一部分为双向 ...
- 洛谷 P1073 最优贸易 & [NOIP2009提高组](反向最短路)
传送门 解题思路 很长的题,实际上在一个有向图(点有点权)中求一个从起点1到终点n的路径,使得这条路径上点权最大的点与点权最小的点的差值最大(要求必须从点权较小的点能够走到点权较大的点). ——最短路 ...
- [NOIP2009] 提高组 洛谷P1073 最优贸易
题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分 为双向通行的道路 ...
- 洛谷 P1073 最优贸易
题目描述 CC C 国有 n n n 个大城市和 m mm 条道路,每条道路连接这 nnn 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 mmm 条道路中有一部分为单向通行的道路 ...
- NOIP2009 codevs1173 洛谷P1073 最优贸易
Description: 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分为双向通 ...
- 洛谷P1073最优贸易——双向取值
题目:https://www.luogu.org/problemnew/show/P1073 由于任何城市都可以多次经过,所以可以随便走,也就不用太在意有向边和无向边,把无向边当做两条有向边处理: 根 ...
随机推荐
- 获取发布的头条的url,避免点击打开新的页面
https://www.toutiao.com/ document.getElementsByClassName("ugc-mode-content")[0].getElement ...
- Interval 计时器
语法: setInterval(代码,交互时间); 在执行时,从载入页面后每隔指定的时间执行代码. clearInterval( setInterval() 返回的 ID 值 ): 取消计时器 < ...
- spring boot-启动及配置文件
spring boot启动: 1:默认启动方法 public static void main(String[] args) { SpringApplication.run(UserServiceAp ...
- Centos7 防火墙firewalld配置
开启80端口 firewall-cmd --zone=public --add-port=80/tcp --permanent 出现success表明添加成功 移除某个端口 firewall-cmd ...
- ubutu14.04无法使用sudo,也无法切换到root用户去解决问题怎么办?
一不小心,修改了/etc/sudoers文件. 惨了. 无法使用sudo了,啥都干不成了. 最最关键的是,也无法用root登录. 本想着要重装系统了. 后来发现了神奇的ubuntu安全模式. 1.重启 ...
- 8-12 canvas专题-阶段练习一(上)
8-12 canvas专题-阶段练习一(上) <!DOCTYPE html> <html lang="zh-cn"> <head> <me ...
- Java 并发 —— Thread、Executor、线程池
Java 线程池: ThreadPoolExecutor,创建此线程池的方法: new Executors.newCachedThreadPool():尽量避免使用,其无法控制线程数量, Schedu ...
- vue 目录结构介绍
1 初始目录如下: 2 目录结构介绍 bulid:最终帆布的代码存放位置 config:配置目录,包括端口号等 node_modules:npm加载的项目依赖模块 src:z这里是我们要开发的目录,基 ...
- Linux压缩命令(zip/gz/bz2/tar/tar.gz/tar.bz2)
一.Linux的压缩格式 .zip . gz . bz2 .tar 1..zip格式(Linux和Windows是可以互传的) 压缩命令 语法:zip 文件名.zip 文件名 ------压缩 ...
- 洛谷P4887 第十四分块(前体)(二次离线莫队)
题面 传送门 题解 lxl大毒瘤 我们考虑莫队,在移动端点的时候相当于我们需要快速计算一个区间内和当前数字异或和中\(1\)的个数为\(k\)的数有几个,而这个显然是可以差分的,也就是\([l,r]\ ...