题目

描述
由于 A 学校生物实验室里那个不负责的数据分析员, 实验室的病毒威力被错误估算,导致了可怕的病毒泄漏,现在病毒即将在校园内传播开来。
校园里一共有 n 个建筑物, 生物实验室总是位于一号建筑物且在 0 时刻受到病毒入侵。这 n 个建筑物由 m 条单向道路相连(也有可能有建筑物被孤立) 。每条道路有两个信息:它的长度,它是多少年前修建的。当一个建筑物被病毒入侵,从被入侵的时刻起, 病毒会从所有由这个建筑物通向其他建筑物的道路按着这条道路的方向以 1 个单位每秒的速度行进。
校长得知这个事情后, 决定放弃这个学校逃跑。 校长总是位于编号为 n 的行政楼,从零时刻开始需要共 T 秒来逃出行政楼,且逃出行政楼即视为逃出了这个学校。也就是说,如果病毒入侵行政楼的时间不小于 T,则校长能够成功逃离。
有些时候,校长没有足够的时间逃离,因为病毒到达行政楼的时间太快了。
为了让校长能够逃离学校, 不得不拆除校园内的一些道路以延缓行政楼的被入侵时间(拆除道路视为在 0 时刻被拆的道路全部消失) 。当然,如果使得病毒根本无法到达行政楼,也是可以的。
但是, 拆除道路会影响学校的历史气息,且破坏程度定义为拆除的道路中最古老的一条的年龄。请求出保证校长能够安全撤离的情况下,最小的破坏程度。
输入
第一行包含三个整数:n, m, T。
接下来 m 行,每行描述一条有向道路。每行 4 个整数,si, ti, Li, Yi,分别表
示这条道路的起点,终点,长度,这条道路的年龄。
输出
如果不需要拆除任何道路,输出一行两个数:-1 和行政楼的被感染时刻(当然
这个时刻大于等于 T) ,以空格隔开。
否则输出一行包含一个数:最小的破坏程度。
样例一
delay.in
5 5 15
1 2 6 35
2 4 8 40
1 3 6 45
3 4 3 25
4 5 5 50
delay.out
25
【样例一说明】

每条边上的黑字对应这条路的长度,红字对应年龄。校长将在第 15 秒逃出学校,如果不拆除任何道路,行政楼将在第 14 秒受到入侵。你可以拆除 4 到 5 的道路,使得行政楼免于入侵,这样的破坏程度是 50。但是最好的方法是拆掉 3 到 4 之间的道路,这样使得行政楼在第 19 秒受到入侵,校长就可以逃离了。
样例一
delay.in
3 2 10
1 2 5 30
2 3 6 50
delay.out
-1 11

【数据范围】
对于 20%的数据,n, m<=10
对于 60%的数据,n, m<=100.
对于 100%的数据,n<=20000, m<=100000.
数据保证在不拆除任何道路的情况下,从 1 号楼到 n 号楼一定存在路径。

代码

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;struct Holder{int to,next,l,a;
}e[100005];
int head[100005],n,m,t,dis[100005],vis[100005];struct Data{int a,b,c,d;
}data[100005];int cmp(Data a,Data b){return a.d<b.d;
}int cnt=1;
int Add(int u,int v,int l,int a){e[cnt].to=v;e[cnt].l=l;e[cnt].a=a;e[cnt].next=head[u];head[u]=cnt++;
}int Spfa(){queue<int> Q;Q.push(1);vis[1]=1;dis[1]=0;while(!Q.empty()){int now=Q.front();Q.pop();vis[now]=1;for(int i=head[now];i;i=e[i].next){int v=e[i].to;if(e[i].l+dis[now]<dis[v]){dis[v]=e[i].l+dis[now];if(!vis[v]){Q.push(e[i].to);}}}}
}void Initialize(){memset(vis,0,sizeof(vis));memset(dis,127,sizeof(dis));memset(head,0,sizeof(head));memset(e,0,sizeof(e));
}void Read(){scanf("%d%d%d",&n,&m,&t);int a,b,c,d;for(int i=1;i<=m;i++){scanf("%d%d%d%d",&data[i].a,&data[i].b,&data[i].c,&data[i].d);Add(data[i].a,data[i].b,data[i].c,data[i].d);}
}int Judge(int x){cnt=1;Initialize();for(int i=x+1;i<=m;i++){Add(data[i].a,data[i].b,data[i].c,data[i].d);}Spfa();if(dis[n]>=t){return 1;}else{return 0;}
}
void Bisection(){int l=1,r=m,ans=0;while(l<=r){int mid=(l+r)>>1;if(Judge(mid)){ans=mid;r=mid-1;}else{l=mid+1;}}cout<<data[ans].d<<endl;
}
void Solve(){if(dis[n]>=t){printf("-1 %d\n",dis[n]);}else{sort(data+1,data+1+m,cmp);Bisection();}
}
int main(){ Initialize();Read();Spfa();Solve();
}

[NOIP 模拟]疫情延迟 二分+Spfa相关推荐

  1. 【NOIp模拟】【二分答案】电缆老板

    背景 某地区即将举行区域程序设计比赛,竞赛委员会已经成立并决定举行一次最公平的竞赛,他们决定利用星形拓扑结构来连接每个竞赛者的电脑-也即连接这些电脑到一个中心HUB上:为了达到真正的公平竞赛目的,竞赛 ...

  2. 【HHHOJ】NOIP模拟赛 捌 解题报告

    点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...

  3. 闵梓轩大佬のnoip模拟题D1 总结 2017/10/26

    背景 题目概括 T1 题面 分析 90分算法 满分算法 T2 题面 分析 部分分算法 满分算法 满分代码 T3 题面 分析 代码 总结 背景 这道题目是去年的金牌大佬闵梓轩在一年前出的一套noip模拟 ...

  4. jyzy noip模拟赛5.22-2

    不知道哪来的题 jyzy noip模拟赛5.22-2 样例输入 1 2 3 4 样例输出 0.200000000000000 数据 |a|,|b|,|c|,|d|<=1e9 很多大佬迅速想到二分 ...

  5. NOIP模拟赛csy2021/10/30

    NOIP模拟赛csy2021/10/30 比赛时间规划 赛后反思与总结 这..总的来说感觉打的很不好,根本没有状态,有一部分原因是今天来晚了,太慌,更多的还是这次题感觉很难o(╥﹏╥)o 比赛时间规划 ...

  6. NOI.AC NOIP模拟赛 第六场 游记

    NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...

  7. poj 2049(二分+spfa判负环)

    poj 2049(二分+spfa判负环) 给你一堆字符串,若字符串x的后两个字符和y的前两个字符相连,那么x可向y连边.问字符串环的平均最小值是多少.1 ≤ n ≤ 100000,有多组数据. 首先根 ...

  8. 【noip模拟赛4】Matrix67的派对 暴力dfs

    [noip模拟赛4]Matrix67的派对 描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们安排 ...

  9. UVALive 4223 Trucking 二分+spfa

    Trucking 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8& ...

最新文章

  1. java mp3转wav_在线语音转文字网站,快收藏起来
  2. mp3 pcm java_Java mp3文件转pcm文件
  3. c3等待加载样式 vue_Vue.js__简易加载等待动画
  4. python如何合并两个字典
  5. php 返回索引,PHP mySQL - 你能否返回帶有數字索引的關聯數組?
  6. WebRTC与Ace在线代码编辑器合作,实现实时协作编程
  7. tcpip详解卷一arp 地址解析协议
  8. Git下载(下载失败解决方式)
  9. 南方CASS工程应用--道路断面土方计算实例教程
  10. 大数据应用领域都有哪些(一)
  11. android 图片闪光动画_Android使用LinearGradient实现两道闪光效果
  12. 群晖nas 文件服务器,群晖nas挂到云服务器上
  13. 线性代数在计算机视觉的应用,线性代数在数据科学中的十大强大应用(二)
  14. [SHOI2008] 小约翰的游戏
  15. android国家码
  16. casio计算用计算机面板,《CASIOfx—4850P计算器土木工程测量计算程序开发和应用》.pdf...
  17. 海乐淘商城系统--01前缀(功能介绍以及关于架构)
  18. C语言中的布尔型变量
  19. MyEclipse如何复制项目、无法修改web-context-root问题解决办法/ Repeated column in mapping for entity
  20. 第八篇 Linux文件与目录管理(上)

热门文章

  1. 2.5 纳什均衡的存在性
  2. 重磅!GitHub突然宣布,对全球人免费开放全部核心功能
  3. 接口保护,element-ui+axios使用加密,后端php-laravel解密
  4. 行业洞察 | Web3、AI4Science、机器人,热门赛道全解析...AI商业化受阻,拐点在何方?...
  5. java 压缩jar_Java基础之实现解压和压缩jar、zip、rar等源码分享
  6. GIS毕业生经典笔试、面试题汇总(待续)
  7. node.js 最全命令行配置操作win10
  8. Android Google Maps V2之动态Polyline
  9. 采集规则:小说网站 www.hexaworld.net适用于易读系统的采集规则
  10. iPhone XS系列降价一千元;Intel雷电接口将融合USB4;蔚来汽车收入、亏损均增长百分百 | 雷锋早报... 1