传送门

题意:给一个图,定义两点间的距离为路径上最大的边权,可以将路径上不多于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架设电话线相关推荐

  1. [BZOJ1614][Usaco2007 Jan]Telephone Lines架设电话线

    [Usaco2007 Jan]Telephone Lines架设电话线 时间限制: 1 Sec 内存限制: 128 MB 题目描述 Farmer John打算将电话线引到自己的农场,但电信公司并不打算 ...

  2. 【二分答案】【最短路】bzoj1614 [Usaco2007 Jan]Telephone Lines架设电话线

    对于二分出的答案x而言,验证答案等价于将所有边权>x的边赋成1,否则赋成0,然后判断从1到n的最短路是否<=K. #include<cstdio> #include<cs ...

  3. [BZOJ] 1614: [Usaco2007 Jan]Telephone Lines架设电话线

    1614: [Usaco2007 Jan]Telephone Lines架设电话线 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1806  Solve ...

  4. bzoj 1614: [Usaco2007 Jan]Telephone Lines架设电话线(二分+SPFA)

    1614: [Usaco2007 Jan]Telephone Lines架设电话线 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1761  Solve ...

  5. [Usaco2007 Jan]Telephone Lines架设电话线

    题目描述 FarmerJohn打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务.于是,FJ必须为此向电信公司支付一定的费用.FJ的农场周围分布着N(1<=N<=1,000)根 ...

  6. BZOJ——1614: [Usaco2007 Jan]Telephone Lines架设电话线

    Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1930  Solved: 823 [Submit][Status][Discuss] Descripti ...

  7. bzoj1705[Usaco2007 Nov]Telephone Wire 架设电话线(dp优化)

    1705: [Usaco2007 Nov]Telephone Wire 架设电话线 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 441  Solved ...

  8. 【bzoj1705】[Usaco2007 Nov]Telephone Wire 架设电话线 dp

    题目描述 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线. 新的电话线架设在已有的N(2 <= N < ...

  9. bzoj 1614 Telephone Lines架设电话线 - 二分答案 - 最短路

    Description Farmer John打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务.于是,FJ必须为此向电信公司支付一定的费用. FJ的农场周围分布着N(1 <= N ...

最新文章

  1. IT资产管理的演变原文-Generations of IT Asset Management
  2. Html做弹出式菜单,JavaScript制作的可折叠弹出式菜单示例
  3. 删除数组中的负数,输出结果为正数
  4. nginx 静态文件
  5. java 档案管理系统论文_基于JAVA学生档案管理系统论文.doc
  6. Android 6.0 API
  7. android dao设计模式,DAO设计模式
  8. Android打开/关闭wifi命令
  9. android 按键上报流程,input子系统详解,按键如何上报
  10. 公交车宜配备逃生绳索
  11. xlsx表格怎么筛选重复数据_excel表格中如何筛选重复数据
  12. rocketMQ启动
  13. 应用程序正常初始化(0xc0000034)失败
  14. 知识图谱从入门到应用——知识图谱的应用
  15. 数字信号处理中,系统函数零极点图的绘制
  16. Visio保存为网页出错
  17. 汇编Ch.5 Ch.6笔记
  18. 绝对经典的原理定理理论原则效应法则
  19. 基于MTCNN卷积神经网络的人脸识别
  20. 为什么RocketMQ是金融核心系统消息中间件的第一选择

热门文章

  1. 一文了解c/c++、java、JavaScript、php、Python的用途
  2. 基于ANN的6种调制信号自动调制识别(2ASK、4ASK、2FSK、4FSK、2PSK、4PSK)
  3. shell 读取文件
  4. HTML5中常用的标签(及标签的属性和作用)
  5. Entityframework Code First 系列之项目搭建
  6. CocoaPods版本升级
  7. 【转载】关于Java堆和栈的解释,收藏下来以后学习
  8. Winpcap网络编程十之Winpcap实战,两台主机通过中间主机通信
  9. 轻量级数据库Sqlite的使用
  10. 淺談Raid Cache Memory上應用的問題和實踐