题目链接

Solution

分层图+\(SPFA\)。
建立3层图,其中每一层之中的边权赋为0.
对于任意一条边 \(t\) ,其起点 \(x\) 和终点 \(y\).
我们将 \(x\) 在第一层的节点连向 \(y\) 的第二层节点,边权为 \(w[x]\).
代表在 \(x\) 买了这个东西.
然后将 \(x\) 在第二层的节点连向 \(y\) 的第三层节点,边权为 \(-w[x]\).
代表在 \(x\) 卖了这个东西.

此外,囿于可以直接不买不卖,所以直接从节点 \(1\) 连一条边权为 \(0\) 的边向超级终点 \(T\).

然后跑 \(SPFA\) . 注意,一般\(dijkstra\)不能跑带负权的图!!!

Code

#include<bits/stdc++.h>
using namespace std;
const int maxn=200008;
struct sj{int to,next,w;
}a[maxn*4];
int head[maxn],size;int read()
{char ch=getchar(); int f=1,w=0;while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch<='9'&&ch>='0'){w=w*10+ch-'0';ch=getchar();}return f*w;
}void add(int x,int y,int w)
{a[++size].to=y;a[size].next=head[x];head[x]=size;a[size].w=w;
}
int n,m,w[maxn];
int dis[maxn],v[maxn];void spfa()
{queue<int>q;memset(dis,127,sizeof(dis));q.push(1);v[1]=1; dis[1]=0;while(q.empty()!=1){int x=q.front(); q.pop(); v[x]=0;for(int i=head[x];i;i=a[i].next){int tt=a[i].to;if(dis[tt]>dis[x]+a[i].w){dis[tt]=dis[x]+a[i].w;if(!v[tt])q.push(tt),v[tt]=1;}           }}
}void pre(int x,int y)
{add(x,y,0);add(x,y+n,w[x]);add(x+n,y+n,0);add(x+n,y+2*n,-w[x]);add(x+2*n,y+2*n,0);
}
int main()
{n=read(); m=read();for(int i=1;i<=n;i++)w[i]=read();for(int i=1;i<=m;i++){int x=read(),y=read(),opt=read();pre(x,y);if(opt==2)pre(y,x);}add(1,3*n+1,0);add(3*n+1,3*n+2,0);add(3*n,3*n+2,0);spfa();cout<<-1*dis[3*n+2]<<endl;
}

转载于:https://www.cnblogs.com/Kv-Stalin/p/9525913.html

[NOIP2009] 最优贸易 (最短路,分层图)相关推荐

  1. NOIP2009 最优贸易

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

  2. 洛谷 P4011 孤岛营救问题【最短路+分层图】

    题外话:昨夜脑子昏沉,今早一调试就过了...错误有:我忘记还有墙直接穿墙过...memset初始化INF用错了数...然后手残敲错一个状态一直过不了样例...要是这状态去比赛我简直完了......or ...

  3. 最短路分层图专题 洛谷P2939,4822,4568

    2020.6.3 今天主要练习了下分层图.看洛谷题解每次都能有新收获.今天本来想练dp,后来感觉可能会太自闭了,不如先来一发最短路,毕竟看家本领不能忘.然后点进了北京某年wc的一道题,让求1-n的最短 ...

  4. ACM-ICPC 2018 南京赛区网络预赛 L. Magical Girl Haze 最短路+分层图

    类似题解 There are NN cities in the country, and MM directional roads from uu to v(1\le u, v\le n)v(1≤u, ...

  5. 洛谷 P1073 最优贸易 (分层图状态转移+SPFA,求最长路径;另附某dalao的超短代码:暴力+动规)

    题目链接1 题目链接2 另附某dalao的超短代码:暴力+动规 P1073 最优贸易 题目描述 C国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市. 任意两个城市之间最多只有 ...

  6. POJ - 3662 Telephone Lines(分层图最短路)

    题目链接:点击查看 题目大意:在郊区有N座通信基站,P条双向电缆,第i条电缆连接基站Ai和Bi.特别的,1号基站是通信公司的总站,N号基站位于一座农场中.现在,农场主希望对通信线路进行升级,其中升级第 ...

  7. 图论 ---- E. Minimum Path(分层图最短路 用分层图对边权操作进行选择)

    题目链接 题目大意: 两点间最短路的定义变成:所有的边之和−max+min所有的边之和-max+min所有的边之和−max+min 解题思路: 这里很明显就是变成了最短路的时时候就是把路径上边权最小值 ...

  8. BZOJ2662[BeiJing wc2012]冻结——分层图最短路

    题目描述 "我要成为魔法少女!"      "那么,以灵魂为代价,你希望得到什么?"  "我要将有关魔法和奇迹的一切,封印于卡片之中„„"  ...

  9. CodeForces - 1486E Paired Payment(分层图最短路)

    题目链接:点击查看 题目大意:给出一个 nnn 个点 mmm 条边组成的带权无向图,规定每次只能走两条边,假设走的两条边为 a−>b−>ca->b->ca−>b−> ...

最新文章

  1. 从“优化”、“向社会输送人才”到“毕业”,互联网的高情商裁员
  2. sublime配置全攻略
  3. zzuli1895: 985的0-1串难题
  4. 数据从程序中传入到form中
  5. java有关问题,java经典有关问题!
  6. 数据科学 IPython 笔记本 7.9 组合数据集:连接和附加
  7. 成功最快的就是改变你这个思维,拥有这个全新的思维
  8. hmcl手机版_hmcl启动器手机版下载-hmcl启动器安卓版下载mod附教程_易玩网
  9. 蓝牙条码扫描枪如何选购
  10. ws2812B+单片机驱动
  11. 打开Word提示向程序发送命令时出现问题怎么办?
  12. 初创期企业运营必备手册-工具包-绩效考核方法工具包
  13. Unity3D 程序最简单的开机启动——创建快捷方式
  14. Linux修改系统时间为东八区北京时间(上海时间)
  15. 想成为企业疯抢的新型数通人才?华为Datacom认证喊你来学习啦
  16. python math库 sqrt eval_假设 math 标准库已导入,那么表达式 eval('math.sqrt(4)') 的值为 _________ 。( ) (2.0分)_学小易找答案...
  17. java基于微信小程序的校园二手闲置商品交易平台 uinapp 计算机毕业设计
  18. Android github上优秀开源项目分类汇总
  19. 疫情宅家厨艺秀 | 究竟是自学成大厨,还是厨房大翻车?
  20. word中最后一行留白太多

热门文章

  1. 最短路径(floyed)
  2. (5.2) Tomcat 8 源码, 初始化组件
  3. 网页制作遵循四大原则让网站建设更加优质
  4. 网站优化中能有效提升网站打开速度的技巧有哪些?
  5. 网站优化之交换友情链接应注意什么?
  6. 闭包函数python_Python--函数对象闭包函数
  7. http服务器 如何传输文件,http服务器 如何传输文件
  8. python变量详解_Python 变量详解[学习 Python 必备基础知识][看此一篇就够了]
  9. proe输入数字时成双出现_罗斯蒙特温度变送器3144P单只和双只输入输出的的含义...
  10. 开发日记-20190429 关键词 患病 NDK