题目描述

Farmer John打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务。于是,FJ必须为此向电信公司支付一定的费用。 FJ的农场周围分布着N(1 <= N <= 1,000)根按1..N顺次编号的废弃的电话线杆,任意两根电话线杆间都没有电话线相连。一共P(1 <= P <= 10,000)对电话线杆间可以拉电话线,其余的那些由于隔得太远而无法被连接。 第i对电话线杆的两个端点分别为A_i、B_i,它们间的距离为 L_i (1 <= L_i <= 1,000,000)。数据中保证每对{A_i,B_i}最多只出现1次。编号为1的电话线杆已经接入了全国的电话网络,整个农场的电话线全都连到了编号为N的电话线杆上。也就是说,FJ的任务仅仅是找一条将1号和N号电话线杆连起来的路径,其余的电话线杆并不一定要连入电话网络。 经过谈判,电信公司最终同意免费为FJ连结K(0 <= K < N)对由FJ指定的电话线杆。对于此外的那些电话线,FJ需要为它们付的费用,等于其中最长的电话线的长度(每根电话线仅连结一对电话线杆)。如果需要连结的电话线杆不超过 K对,那么FJ的总支出为0。 请你计算一下,FJ最少需要在电话线上花多少钱。

输入

* 第1行: 3个用空格隔开的整数:N,P,以及K

* 第2..P+1行: 第i+1行为3个用空格隔开的整数:A_i,B_i,L_i

输出

* 第1行: 输出1个整数,为FJ在这项工程上的最小支出。如果任务不可能完成, 输出-1

样例输入

5 7 1
1 2 5
3 1 4
2 4 8
3 2 3
5 2 9
3 4 7
4 5 6

样例输出

4


题解

二分答案+最短路

先二分出mid,然后把长度大于mid的边看成1,长度小于等于mid的边看成0,跑最短路(Spfa)。

判断距离是否小于等于k即可。

#include <cstdio>
#include <queue>
using namespace std;
int r[1001] , inq[1001] , n , p , k;
int head[1001] , to[20001] , val[20001] , next[20001] , cnt;
queue<int> q;
bool judge(int mid)
{int u , i , d;for(i = 1 ; i <= n ; i ++ )r[i] = 0x3ffffff;r[1] = 0;inq[1] = 1;q.push(1);while(!q.empty()){u = q.front();q.pop();inq[u] = 0;for(i = head[u] ; i ; i = next[i]){d = (val[i] > mid);if(r[to[i]] > r[u] + d){r[to[i]] = r[u] + d;if(!inq[to[i]]){inq[to[i]] = 1;q.push(to[i]);}}}}return r[n] <= k;
}
void add(int x , int y , long long z)
{to[++cnt] = y;val[cnt] = z;next[cnt] = head[x];head[x] = cnt;
}
int main()
{int i , x , y , l = 0 , r = 0 , mid , ans = -1 , z;scanf("%d%d%d" , &n , &p , &k);for(i = 0 ; i < p ; i ++ ){scanf("%d%d%d" , &x , &y , &z);add(x , y , z);add(y , x , z);r = max(r , z);}while(l <= r){mid = (l + r) >> 1;if(judge(mid)){ans = mid;r = mid - 1;}else l = mid + 1;}printf("%d\n" , ans);return 0;
}

转载于:https://www.cnblogs.com/GXZlegend/p/6278375.html

【bzoj1614】[Usaco2007 Jan]Telephone Lines架设电话线 二分+SPFA相关推荐

  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. [bzoj1614]: [Usaco2007 Jan]Telephone Lines架设电话线

    传送门 题意:给一个图,定义两点间的距离为路径上最大的边权,可以将路径上不多于k条边的权值变为0,求两点间最小距离 二分答案,判断时只要将大于当前二分值的边记为1,否则记为0,做一遍spfa,判断di ...

  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. [BZOJ] 1614: [Usaco2007 Jan]Telephone Lines架设电话线

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. Android 分享控件
  2. 金属材料手册_不锈钢品种手册简化版
  3. mete30是鸿蒙系统么,华为mete30pro什么时候能用上鸿蒙系统?
  4. linux etc profile生效,让/etc/profile文件修改后立即生效
  5. 启动不起来_电脑启动不起来该怎么办
  6. 清空linux+history_1分钟学会的Linux小技巧,大大提高你的工作效率
  7. jq 批量删除 php,批量删除JQuery获取选中的CheckBox值
  8. CSDN积分计算方法
  9. 天猫魔盒android开发者模式,【当贝市场】天猫魔盒M16S开启远程调试模式教程
  10. RUP6 第二次升级失败
  11. B75经典门户商业版Discuz模板下载
  12. U盘快捷方程病毒 iexplore.vbs
  13. 二分以及编程过程中求中点各种写法思想解析以及完美写法
  14. Gini Index vs Information Entropy
  15. 联想System X 3650M5 服务器装机问题记录
  16. IOS中impactor报81错误解决方法
  17. 你迷茫的原因在于读书太少而想的太多,迷茫不知所措时,那就多读书吧!年轻是本钱,但不努力就不值钱
  18. excel两列数据查重
  19. 如何批量将word转换成excel表格
  20. Android 4.2 Wifi Display核心分析 (一)

热门文章

  1. 算法复杂度(2):常用数据结构的时间复杂度和空间复杂度 统计
  2. 百度翻译API 错误码: 52003,错误信息: UNAUTHORIZED USER
  3. 并发 锁和隔离等级的关系
  4. java 正则 非贪婪_正则表达式中贪婪模式与非贪婪模式的区别
  5. mysql报1665_mysql错误处理之ERROR 1665 (HY000)_MySQL
  6. 基于springboot+vue的旅游信息(旅游线路)网站(前后端分离)
  7. 2021-06-07java继承
  8. 阿里云mysql远程连接_阿里云从0安装mysql到远程连接
  9. 《神奇的数学》读后感_数学家的眼光读后感
  10. WebService /php soap 相关调用 收藏