[bzoj1614]: [Usaco2007 Jan]Telephone Lines架设电话线
传送门
题意:给一个图,定义两点间的距离为路径上最大的边权,可以将路径上不多于k条边的权值变为0,求两点间最小距离
二分答案,判断时只要将大于当前二分值的边记为1,否则记为0,做一遍spfa,判断dist是否大于k即可
无向边数忘记乘2卡了半天T_T
spfa队列数组要开得比结点数多
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 #define maxn 1010 6 #define maxe 20100 7 struct node{ 8 int to,next,weight; 9 }Edge[maxe]; 10 int n,p,k; 11 int cnt=0,mxl=0; 12 int last[maxn],q[maxn*10],dist[maxn]; 13 bool inq[maxn]; 14 int read(){ 15 int x=0,f=1; 16 char ch=getchar(); 17 while (ch<'0'||ch>'9') { 18 if (ch=='-') f=-1; 19 ch=getchar(); 20 } 21 while (ch>='0'&&ch<='9'){ 22 x=x*10+ch-'0'; 23 ch=getchar(); 24 } 25 return x*f; 26 } 27 void insert(int u,int v,int w){ 28 Edge[++cnt].to=v; 29 Edge[cnt].next=last[u]; 30 last[u]=cnt; 31 Edge[cnt].weight=w; 32 } 33 bool ok(int cost){ 34 memset(inq,0,sizeof(inq)); 35 memset(dist,127/3,sizeof(dist)); 36 memset(q,0,sizeof(q)); 37 int head=0,tail=1,now,len,i; 38 inq[1]=1;q[head]=1;dist[1]=0; 39 while (head<tail){ 40 now=q[head++]; 41 len=0; 42 i=last[now]; 43 while (i){ 44 len=Edge[i].weight>cost?dist[now]+1:dist[now]; 45 if (len<dist[Edge[i].to]){ 46 dist[Edge[i].to]=len; 47 if (!inq[Edge[i].to]){ 48 q[tail++]=Edge[i].to; 49 inq[Edge[i].to]=1; 50 } 51 } 52 i=Edge[i].next; 53 } 54 inq[now]=0; 55 } 56 return dist[n]>k?0:1; 57 } 58 int main(){ 59 n=read();p=read();k=read(); 60 int u,v,w; 61 memset(last,0,sizeof(last)); 62 for (int i=1;i<=p;i++){ 63 u=read(),v=read(),w=read(); 64 insert(u,v,w); 65 insert(v,u,w); 66 mxl=max(mxl,w); 67 } 68 int l=0,r=mxl,mid; 69 int ans=-1; 70 while (l<=r){ 71 mid=(l+r)>>1; 72 if (ok(mid)){ 73 ans=mid;r=mid-1; 74 } 75 else l=mid+1; 76 } 77 printf("%d\n",ans); 78 return 0; 79 }
View Code
转载于:https://www.cnblogs.com/vincent-hwh/p/7347747.html
[bzoj1614]: [Usaco2007 Jan]Telephone Lines架设电话线相关推荐
- [BZOJ1614][Usaco2007 Jan]Telephone Lines架设电话线
[Usaco2007 Jan]Telephone Lines架设电话线 时间限制: 1 Sec 内存限制: 128 MB 题目描述 Farmer John打算将电话线引到自己的农场,但电信公司并不打算 ...
- 【二分答案】【最短路】bzoj1614 [Usaco2007 Jan]Telephone Lines架设电话线
对于二分出的答案x而言,验证答案等价于将所有边权>x的边赋成1,否则赋成0,然后判断从1到n的最短路是否<=K. #include<cstdio> #include<cs ...
- [BZOJ] 1614: [Usaco2007 Jan]Telephone Lines架设电话线
1614: [Usaco2007 Jan]Telephone Lines架设电话线 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1806 Solve ...
- bzoj 1614: [Usaco2007 Jan]Telephone Lines架设电话线(二分+SPFA)
1614: [Usaco2007 Jan]Telephone Lines架设电话线 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1761 Solve ...
- [Usaco2007 Jan]Telephone Lines架设电话线
题目描述 FarmerJohn打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务.于是,FJ必须为此向电信公司支付一定的费用.FJ的农场周围分布着N(1<=N<=1,000)根 ...
- BZOJ——1614: [Usaco2007 Jan]Telephone Lines架设电话线
Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1930 Solved: 823 [Submit][Status][Discuss] Descripti ...
- bzoj1705[Usaco2007 Nov]Telephone Wire 架设电话线(dp优化)
1705: [Usaco2007 Nov]Telephone Wire 架设电话线 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 441 Solved ...
- 【bzoj1705】[Usaco2007 Nov]Telephone Wire 架设电话线 dp
题目描述 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线. 新的电话线架设在已有的N(2 <= N < ...
- bzoj 1614 Telephone Lines架设电话线 - 二分答案 - 最短路
Description Farmer John打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务.于是,FJ必须为此向电信公司支付一定的费用. FJ的农场周围分布着N(1 <= N ...
最新文章
- IT资产管理的演变原文-Generations of IT Asset Management
- Html做弹出式菜单,JavaScript制作的可折叠弹出式菜单示例
- 删除数组中的负数,输出结果为正数
- nginx 静态文件
- java 档案管理系统论文_基于JAVA学生档案管理系统论文.doc
- Android 6.0 API
- android dao设计模式,DAO设计模式
- Android打开/关闭wifi命令
- android 按键上报流程,input子系统详解,按键如何上报
- 公交车宜配备逃生绳索
- xlsx表格怎么筛选重复数据_excel表格中如何筛选重复数据
- rocketMQ启动
- 应用程序正常初始化(0xc0000034)失败
- 知识图谱从入门到应用——知识图谱的应用
- 数字信号处理中,系统函数零极点图的绘制
- Visio保存为网页出错
- 汇编Ch.5 Ch.6笔记
- 绝对经典的原理定理理论原则效应法则
- 基于MTCNN卷积神经网络的人脸识别
- 为什么RocketMQ是金融核心系统消息中间件的第一选择
热门文章
- 一文了解c/c++、java、JavaScript、php、Python的用途
- 基于ANN的6种调制信号自动调制识别(2ASK、4ASK、2FSK、4FSK、2PSK、4PSK)
- shell 读取文件
- HTML5中常用的标签(及标签的属性和作用)
- Entityframework Code First 系列之项目搭建
- CocoaPods版本升级
- 【转载】关于Java堆和栈的解释,收藏下来以后学习
- Winpcap网络编程十之Winpcap实战,两台主机通过中间主机通信
- 轻量级数据库Sqlite的使用
- 淺談Raid Cache Memory上應用的問題和實踐