题目:http://codevs.cn/problem/1173/  https://www.luogu.org/problemnew/show/P1073

本来考虑缩点什么的,后来发现不用。

只要记录一下从起点走到现在经过的最小值和从终点走到现在经过的最大值就行了。

从终点走到现在就是记录一个反向边。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define ll long long
using namespace std;
const int N=1e5+,M=5e5+;
int n,m,head1[N],xnt1,head2[N],xnt2;
ll c[N],fn[N],fx[N],mx;
bool vis1[N],vis2[N];
struct Edge{
int next,to;
Edge(int n=,int t=):next(n),to(t) {}
}edge1[M<<],edge2[M<<];
void add(int x,int y)
{
edge1[++xnt1]=Edge(head1[x],y);head1[x]=xnt1;
edge2[++xnt2]=Edge(head2[y],x);head2[y]=xnt2;
}
void read()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%lld",&c[i]);
int x,y,z;
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
add(x,y);if(z==)add(y,x);
}
}
void dj1()
{
memset(fn,,sizeof fn);
priority_queue<pair<ll,int> > q;fn[]=c[];q.push(make_pair(fn[],));
while(q.size())
{
int k=q.top().second;q.pop();
while(vis1[k]&&q.size())k=q.top().second,q.pop();
if(vis1[k])break;vis1[k]=;
for(int i=head1[k],v;i;i=edge1[i].next)
if(min(fn[k],c[v=edge1[i].to])<fn[v])
{
fn[v]=min(fn[k],c[v]);q.push(make_pair(fn[v],v));
}
}
}
void dj2()
{
priority_queue<pair<ll,int>,vector<pair<ll,int> >,greater<pair<ll,int> > >q;
fx[n]=c[n];q.push(make_pair(fx[n],n));
while(q.size())
{
int k=q.top().second;q.pop();
while(vis2[k]&&q.size())k=q.top().second,q.pop();
if(vis2[k])break;vis2[k]=;
for(int i=head2[k],v;i;i=edge2[i].next)
if(max(fx[k],c[v=edge2[i].to])>fx[v])
{
fx[v]=max(fx[k],c[v]);q.push(make_pair(fx[v],v));
}
}
}
int main()
{
read();
dj1();dj2();
for(int i=;i<=n;i++)
if(vis1[i]&&vis2[i])
mx=max(mx,fx[i]-fn[i]);
printf("%lld",mx);
return ;
}

noip2009最优贸易(水晶球)的更多相关文章

  1. [NOIP2009]最优贸易(图论)

    [NOIP2009]最优贸易 题目描述 CC 国有 \(n\) 个大城市和 \(m\) 条道路,每条道路连接这 \(n\) 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 \(m\ ...

  2. [Luogu 1073] NOIP2009 最优贸易

    [Luogu 1073] NOIP2009 最优贸易 分层图,跑最长路. 真不是我恋旧,是我写的 Dijkstra 求不出正确的最长路,我才铤而走险写 SPFA 的- #include <alg ...

  3. NOIP2009 最优贸易

    3. 最优贸易 (trade.pas/c/cpp) [问题描述] C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个城市之间 多只有一条道路直接相连.这 m 条道 ...

  4. 【洛谷P1073】[NOIP2009]最优贸易

    最优贸易 题目链接 看题解后感觉分层图好像非常NB巧妙 建三层n个点的图,每层图对应的边相连,权值为0 即从一个城市到另一个城市,不进行交易的收益为0 第一层的点连向第二层对应的点的边权为-w[i], ...

  5. [luogu1073 Noip2009] 最优贸易 (dp || SPFA+分层图)

    传送门 Description C 国有n 个大城市和m 条道路,每条道路连接这n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这m 条道路中有一部分为单向通行的道路,一部分 为 ...

  6. NOIP2009最优贸易[spfa变形|tarjan 缩点 DP]

    题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分 为双向通行的道路 ...

  7. noip2009最优贸易

    试题描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双 ...

  8. 洛谷1073 NOIP2009 最优贸易

    题目大意 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双 ...

  9. [NOIP2009] 最优贸易 (最短路,分层图)

    题目链接 Solution 分层图+\(SPFA\). 建立3层图,其中每一层之中的边权赋为0. 对于任意一条边 \(t\) ,其起点 \(x\) 和终点 \(y\). 我们将 \(x\) 在第一层的 ...

随机推荐

  1. source insight 4.0的基本使用方法(转)

    源:source insight 4.0的基本使用方法 source insight 4设置

  2. Vue学习笔记之Vue的模板字符串

    0x00 模板字符串 传统的JavaScript语言,输出模板通常是这样的写的. $('#result').append( 'There are <b>' + basket.count + ...

  3. 20145118 《Java程序设计》第5周学习总结 教材学习内容总结

    20145118 <Java程序设计>第5周学习总结 教材学习内容总结 1.Java中所有错误都会被打包成对象,可以通过try.catch语法对错误对象作处理,先执行try,如果出错则跳出 ...

  4. JPA EntityManager详解

    EntityManager是JPA中用于增删改查的接口,它的作用相当于一座桥梁,连接内存中的java对象和数据库的数据存储.其接口如下: public interface EntityManager ...

  5. hdu_2048 错排问题

    错排问题本质上就是一个动态规划问题,其状态转移方程为: 记d[n]为n个人错排情况的总数. 那么策略可以描述为:分析第n个人错排的可能情况: 1)前n-1个人满足错排的情况,那么第n个人加入后还要错排 ...

  6. CycleGAN 配置及其实现

    目录 pytorch-CycleGAN-and-pix2pix 环境要求 安装 Train 用已有数据集训练 Test 预训练模型 训练与测试自己的数据集 遇到的问题 Reference pytorc ...

  7. HDU 3435 A new Graph Game(最小费用流:有向环权值最小覆盖)

    http://acm.hdu.edu.cn/showproblem.php?pid=3435 题意:有n个点和m条边,你可以删去任意条边,使得所有点在一个哈密顿路径上,路径的权值得最小. 思路: 费用 ...

  8. Miller_Rabin(米勒拉宾)素数测试

    2018-03-12 17:22:48 米勒-拉宾素性检验是一种素数判定法则,利用随机化算法判断一个数是合数还是可能是素数.卡内基梅隆大学的计算机系教授Gary Lee Miller首先提出了基于广义 ...

  9. Sql Server 开放4399端口命令行

    netsh advfirewall firewall add rule name="Open Port 80" dir=in action=allow protocol=TCP l ...

  10. 【Demo】CSS3 动画 加载进度条

    实例结果图: 完整代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...