题目描述

每天早晨,FJ从家中穿过农场走到牛棚。农场由 N 块农田组成,农田通过 M 条双向道路连接,每条路有一定长度。FJ 的房子在 1 号田,牛棚在 N 号田。没有两块田被多条道路连接,以适当的路径顺序总是能在农场任意一对田间行走。当FZ从一块田走到另一块时,总是以总路长最短的道路顺序来走。

FJ 的牛呢,总是不安好心,决定干扰他每天早晨的计划。它们在 M 条路的某一条上安放一叠稻草堆,使这条路的长度加倍。牛希望选择一条路干扰使得FJ 从家到牛棚的路长增加最多。它们请你设计并告诉它们最大增量是多少。

输入输出格式

输入格式:

第 1 行:两个整数 N, M。

第 2 到 M+1 行:第 i+1 行包含三个整数 A_i, B_i, L_i,A_i 和 B_i 表示道路 i 连接的田的编号,L_i 表示路长。

输出格式:

第 1 行:一个整数,表示通过使某条路加倍而得到的最大增量。

输入输出样例

输入样例#1:

5 7
2 1 5
1 3 1
3 2 8
3 5 7
3 4 3
2 4 7
4 5 2

输出样例#1:

2

说明

【样例说明】

若使 3 和 4 之间的道路长加倍,最短路将由 1-3-4-5 变为 1-3-5。

【数据规模和约定】

对于 30%的数据,N <= 70,M <= 1,500。

对于 100%的数据,1 <= N <= 100,1 <= M <= 5,000,1 <= L_i <= 1,000,000。

题目大意:求将1--n上最短路的某条边的边权*2后新的最短路与原最短路长度差最大是多少

题解:暴力枚举最短路的每一条边*2再跑最短路取max

代码:

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;queue<int>q;
int n,m,sumedge,cnt,cur,ans;
int head[110],pre[110],cut[1100],bege[1100],dis[110],inq[110];struct Edge{int x,y,z,nxt;Edge(int x=0,int y=0,int z=0,int nxt=0):x(x),y(y),z(z),nxt(nxt){}
}edge[5002*2];void add(int x,int y,int z){edge[++sumedge]=Edge(x,y,z,head[x]);head[x]=sumedge;
}int spfa(){memset(dis,127/3,sizeof(dis));memset(inq,0,sizeof(inq));while(!q.empty())q.pop();q.push(1);dis[1]=0;inq[1]=1;while(!q.empty()){int now=q.front();q.pop();inq[now]=0;for(int i=head[now];i;i=edge[i].nxt){int v=edge[i].y;if(dis[v]>dis[now]+edge[i].z){dis[v]=dis[now]+edge[i].z;pre[v]=now;bege[v]=i;if(!inq[v]){inq[v]=1;q.push(v);}}}}return dis[n];
}int main(){scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int x,y,z;scanf("%d%d%d",&x,&y,&z);add(x,y,z);add(y,x,z);}cur=spfa();
//    cout<<dis[3]<<" "<<dis[4]<<endl;for(int i=n;i;i=pre[i])cut[++cnt]=bege[i];for(int i=1;i<=cnt;i++){int k=cut[i];//    cout<<k<<endl;if(k&1){edge[k].z*=2;edge[k+1].z*=2;}else {edge[k].z*=2;edge[k-1].z*=2;}ans=max(ans,spfa());if(k&1){edge[k].z/=2;edge[k+1].z/=2;}else{edge[k].z/=2;edge[k-1].z/=2;}}
//    cout<<ans<<" "<<cur<<endl;cout<<ans-cur<<endl;return 0;
}

转载于:https://www.cnblogs.com/zzyh/p/7601923.html

P2176 [USACO14FEB]路障Roadblock相关推荐

  1. 图论复习(各类习题)

    可以结合这篇博客进行复习:http://www.cnblogs.com/z360/p/7363034.html 一.强连通分量.缩点 习题: 洛谷--P2746 [USACO5.3]校园网Networ ...

  2. 洛谷 P3102 [USACO14FEB]秘密代码Secret Code

    P3102 [USACO14FEB]秘密代码Secret Code 题目描述 Farmer John has secret message that he wants to hide from his ...

  3. [最小割最大流 || 最短路] roadblock Dinic SPFA + SLE

    大家都很强, 可与之共勉. 震惊!cky 竟率兵攻打jyb! jyb 面对强敌,振作精神,想要抗击侵略.jyb 的国家一共有n 个城市,m 条距离为1 的双向道路.现在jyb的所在地是1 号城市,ck ...

  4. Roadblock for Mac(Safari广告内容拦截软件)

    Roadblock Mac版是一款MacOS上Safari的强大的广告内容拦截软件.Roadblock Mac版可以帮助用户阻止烦人和不受欢迎的广告内容,保护您的隐私和安全,提高网页加载速度,并减少浏 ...

  5. Unity功能点---NavMesh的爬墙(OffMeshLink)和路障(NavMesh Obstacle)

    记录一下自己的理解 好久没有使用NavMesh寻路系统了,回忆记录一下,主要是爬墙功能和路障功能: 爬墙功能需要在墙体添加OffMeshLing组件,然后设置爬墙的起始点,在墙上的运动点,从墙上下来的 ...

  6. Safari浏览器广告拦截工具:Roadblock

    Roadblock是一款Mac上功能强大的广告内容拦截工具,可以帮助用户阻止有害的Web内容,保护您的隐私和安全性,缩短网页加载时间,并减少浏览数据的使用量.Roadblock适用于Mac,iPhon ...

  7. 搜索2(一、马的遍历 二、 求细胞数量 三、01迷宫 四、奇怪的电梯 五、海战 六、路障)

    搜索2 一.马的遍历 二. 求细胞数量 三.01迷宫 四.奇怪的电梯 五.海战 六.路障 一.马的遍历 题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算 ...

  8. cocos2dx 植物大战僵尸 17 路障僵尸

    原版植物大战僵尸的路障是饰品,能阻挡一部分伤害,在路障掉落前路障僵尸是不会受伤的. 如下为个人头脑风暴. 路障僵尸使用装饰者的话,需要继承自ZombieBase,由于图片原因,所以内部需要有一个普通僵 ...

  9. 第十八届智能车竞赛赛道上横断路障规格

    一.前言   在 第十八届全国大学生智能车竞赛 赛道中,引入了"横断路障" 的赛道元素, 这个赛道元素与第十四届智能车竞赛 中的赛道路障是相同的.室内赛道组别车模需要在赛道路障前后 ...

最新文章

  1. mysql dbcollat_Mysql Server 层混杂信息字典表 | 全方位认识 information_schem(四)
  2. python进阶九_网络编程
  3. 启明云端WT32-CAM操作视频,让你快速上手ESP32camera应用
  4. Python统计分析--- 5.统计法与随机梯度下降(SGD)
  5. 解决添加Com引用 生成的Interop.*.dll 版本号永远是1.0的问题
  6. 开源框架:CocoaPods 安装学习教程
  7. mysql 密码修改时间_Mysql修改密码的方法
  8. Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
  9. LVS——NAT网络地址转换模式
  10. 桌面没有计算机图标6,我的电脑图标没了怎么办
  11. bash脚本编程之十 函数
  12. 咏南IOCP REST中间件
  13. 省会、自治区、直辖市、特别行政区
  14. IEC 60068-2 规范介绍
  15. Python:正则re.sub实现简易的模板引擎
  16. mysql从指定条数开始查询_mysql数据库指定条数数据查询的主要方法
  17. 9大增长黑客牛人组织盘点,增长黑客发展奠基人!
  18. Swoole入门教程
  19. 移动通信发展历程见解(从1G到5G发展历程)
  20. 少儿编程课程体系需求

热门文章

  1. Django模型自定义查询管理器
  2. springboot 问题Change project compliance and JRE to 1.5
  3. WEB入门之十九 UI
  4. 【C语言】时间操作,把1970年开始秒数计算的时间,转换为字符串格式输出
  5. linux 环境下配置ftp服务器
  6. C#回调函数的简单讲解与应用例子
  7. scala中的隐式转换、隐式参数和隐式类
  8. 机器学习的理论知识点总结
  9. 剑指offer 菲波那切数列
  10. Akka并发编程——第三节:Actor模型(二)