P1073 最优贸易

n 个城市间以 m 条有向道路连接, 小 T 从 1 号城市出发, 将
要去往 n 号城市.
小 T 观察到一款商品 Z 在不同的城市的价格可能不尽相同,
小 T 想要在旅行中的某一个城市购买一件商品 Z, 在另一个
城市卖出. 因为旅途劳顿, 这种买卖小 T 只打算做一次.
请问小 T 能够获得的最大收益是多少?

求点$1$到所有点的最小值,再从$n$出发判断所能够到达,取最大值即可

更新最小值方法与spfa类似

  1. #include<bits/stdc++.h>
  2.  
  3. #define N 1010101
  4. using namespace std;
  5.  
  6. int d[N],n,head[N],tot,phead[N],w[N],m,ans,tpt,dd[N];
  7. struct node {
  8. int to,next;
  9. } e[N],p[N];
  10. void add(int u,int v) {
  11. e[++tot].to=v,e[tot].next=head[u],head[u]=tot;
  12. }
  13. void padd(int u,int v){
  14. p[++tpt].to=v,p[tpt].next=phead[u],phead[u]=tpt;
  15. }
  16.  
  17. queue<int>Q;
  18. bool vis[N];
  19. void spfa() {
  20. memset(vis,,sizeof(vis));
  21. memset(d,0x7f,sizeof(d));
  22. Q.push();vis[]=;
  23. while(!Q.empty()){
  24. int u=Q.front();Q.pop();vis[u]=;
  25. for(int i=head[u];i;i=e[i].next){
  26. int v=e[i].to,minn=min(d[u],w[u]);
  27. if(minn<d[v]){
  28. d[v]=minn;
  29. if(!vis[v]){
  30. Q.push(v);
  31. vis[v]=;
  32. }
  33. }
  34. }
  35. }
  36. }
  37.  
  38. void sspfa(){
  39. memset(vis,,sizeof(vis));
  40. memset(dd,0x7f,sizeof(dd));
  41. Q.push(n);vis[n]=,dd[n]=;
  42. while(!Q.empty()){
  43. int u=Q.front();Q.pop();vis[u]=;
  44. for(int i=phead[u];i;i=p[i].next){
  45. int v=p[i].to;
  46. if(dd[v]>dd[u]+){
  47. dd[v]=dd[u]+;
  48. if(!vis[v]){
  49. Q.push(v);
  50. vis[v]=;
  51. }
  52. }
  53. }
  54. }
  55. }
  56.  
  57. int main() {
  58. scanf("%d%d",&n,&m);
  59. for(int i=; i<=n; i++) scanf("%d",&w[i]);
  60. for(int x,y,z,i=; i<=m; i++) {
  61. scanf("%d%d%d",&x,&y,&z);
  62. if(z==) add(y,x);
  63. add(x,y);
  64. if(z==) padd(x,y);
  65. padd(y,x);
  66. }
  67. spfa();
  68. sspfa();
  69. for(int i=;i<=n;i++){
  70. if(dd[i]<dd[])
  71. ans=max(ans,w[i]-d[i]);
  72. }
  73. printf("%d\n",ans);
  74. return ;
  75. }

洛谷——P1073 最优贸易的更多相关文章

  1. 洛谷 P1073 最优贸易 解题报告

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

  2. 洛谷P1073 最优贸易==codevs1173 最优贸易

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

  3. 洛谷 P1073 最优贸易 最短路+SPFA算法

    目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 题面 题目链接 P1073 最优贸易 题目描述 C国有 $ n $ 个大城市和 ...

  4. 洛谷P1073 最优贸易 [图论,DP]

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

  5. 洛谷 P1073 最优贸易 & [NOIP2009提高组](反向最短路)

    传送门 解题思路 很长的题,实际上在一个有向图(点有点权)中求一个从起点1到终点n的路径,使得这条路径上点权最大的点与点权最小的点的差值最大(要求必须从点权较小的点能够走到点权较大的点). ——最短路 ...

  6. [NOIP2009] 提高组 洛谷P1073 最优贸易

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

  7. 洛谷 P1073 最优贸易

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

  8. NOIP2009 codevs1173 洛谷P1073 最优贸易

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

  9. 洛谷P1073最优贸易——双向取值

    题目:https://www.luogu.org/problemnew/show/P1073 由于任何城市都可以多次经过,所以可以随便走,也就不用太在意有向边和无向边,把无向边当做两条有向边处理: 根 ...

随机推荐

  1. Android studio导入项目时的问题(Re-download dependencies and sync project (requires network))

    引入了别人的项目出现了这种情况提示是跟gradle cache有关,我的解决方法是跟gragle的配置有关 改下这个: distributionUrl=https\://services.gradle ...

  2. oracle基本建表语句

    oracle基本建表语句 2010-09-20 10:37:33|  分类: 数据库 |  标签:数据库  oracle  |字号 订阅 --创建用户create user han identifie ...

  3. XAML实例教程系列 - 标记扩展(Markup Extensions) 六

    XAML实例教程系列 - 标记扩展(Markup Extensions) 分类: Windows 8 Silverlight2012-06-21 13:00 1139人阅读 评论(0) 收藏 举报 扩 ...

  4. mac 下idea光标问题

    可以使用 fn + i 解决此问题

  5. 转 Dos和linux格式转换(转)

    错误提示: bad interpreter: No such file or directory: /bin/sh 错误分析: 因为操作系统是windows,在windows下编辑的脚本,所以有可能有 ...

  6. Java方式 MySQL数据库连接

    JDBC-ODBC : 桥连就是将对JDBC API的调用转换为对另一组数据库连接(即 ODBC) API 的调用 JDBC-ODBC桥连方式驱动类是: sun.jdbc.odbc.JdbcOdbcD ...

  7. Rails5 任务注释

     任务注释  格式  # TODO: ...  # FIXME: ...  # OPTIMIZE ...  查看   rails notes  个别查看  rails notes:todo  rail ...

  8. bzoj 1854: [Scoi2010]游戏【匈牙利算法】

    没啥可说的,就是一边属性一边道具建二分图,把两个属性都连到道具上,然后枚举匹配,如果无法匹配就输出,时间戳优化 #include<iostream> #include<cstdio& ...

  9. 使用Gitalk实现静态页面评论的功能

    使用静态页面的理由 本人在Github上使用github.io部署了一个静态主页,地址是http://aopstudio.github.io,用于存放一些笔记文件.虽然静态页面功能少,自动化程度低,不 ...

  10. angularjs2 不同组件间的通信

    AngualrJs2官方方法是以@Input,@Output来实现组件间的相互传值,而且组件之间必须父子关系,下面给大家提供一个简单的方法,实现组件间的传值,不仅仅是父子组件,跨模块的组件也可以实现传 ...