LOJ10074架设电话线
USACO 2008 Jan. Silver
在郊区有 N 座通信基站,P 条双向电缆,第 i 条电缆连接基站 Ai 和 Bi。特别地,1 号基站是通信公司的总站,N 号基站位于一座农场中。现在,农场主希望对通信线路进行升级,其中升级第i 条电缆需要花费Li。
电话公司正在举行优惠活动。农场主可以指定一条从 1 号基站到 N 号基站的路径,并指定路径上不超过 K 条电缆,由电话公司免费提供升级服务。农场主只需要支付在该路径上剩余的电缆中,升级价格最贵的那条电缆的花费即可。求至少用多少钱能完成升级。
一句话题意 \ \ 在加权无向图上求出一条从 1 号结点到 N 号结点的路径,使路径上第K+1 大的边权尽量小。
输入格式
第一行三个整数 N,P,K.
接下来 P 行,每行三个整数 Ai,Bi,Li.
输出格式
若不存在从 1 到 N 的路径,输出 -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
数据范围与提示
0≤K<N≤1000,1≤P≤2000
——————————————————————————————
二分付费边的长度。
那么所有小于等于该长度的边设为0,大于它的边的长度设为1,那么如果从点1到点n的最短距离小于等于k,说明可以可以建起,否则不可以。
注意判断-1。
——————————————————————————————
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn=1010;
4 const int maxm=2010;
5 int n,m,k;
6 struct edge
7 {
8 int u,v,w,ww,nxt;
9 }e[maxm<<1];
10 int head[maxn],js;
11 void addage(int u,int v,int w)
12 {
13 e[++js].u=u;e[js].v=v;e[js].w=w;
14 e[js].nxt=head[u];head[u]=js;
15 }
16 int l,r,ans;
17 struct node
18 {
19 int dis,p;
20 bool operator < (node b)const
21 {
22 return dis>b.dis;
23 }
24 };
25
26 bool vis[maxn];
27 int dis[maxn];
28 bool pd(int x)
29 {
30 for(int i=1;i<=m+m;++i)e[i].ww=e[i].w<=x?0:1;
31 memset(dis,0x3f,sizeof dis);
32 memset(vis,0,sizeof vis);
33 priority_queue< node > q;
34 dis[1]=0;
35 q.push((node){0,1});
36 while(!q.empty())
37 {
38 node t=q.top();
39 q.pop();
40 int d=t.dis,p=t.p;
41 if(vis[p])continue;
42 vis[p]=1;
43 for(int i=head[p];i;i=e[i].nxt)
44 {
45 int v=e[i].v;
46 if(dis[v]>dis[p]+e[i].ww)
47 {
48 dis[v]=dis[p]+e[i].ww;
49 q.push((node){dis[v],v});
50 }
51 }
52 }
53 if(dis[n]==0x3f3f3f3f)
54 {
55 puts("-1");
56 exit(0);
57 }
58 return dis[n]<=k;
59 }
60 int main()
61 {
62 scanf("%d%d%d",&n,&m,&k);
63 for(int u,v,w,i=0;i<m;++i)
64 {
65 scanf("%d%d%d",&u,&v,&w);
66 addage(u,v,w);addage(v,u,w);
67 r=max(r,w);
68 }
69 while(l<=r)
70 {
71 int mid=(l+r)>>1;
72 if(pd(mid))ans=mid,r=mid-1;
73 else l=mid+1;
74 }
75 cout<<ans;
76 return 0;
77 }
LOJ10074架设电话线的更多相关文章
- BZOJ1614: [Usaco2007 Jan]Telephone Lines架设电话线
1614: [Usaco2007 Jan]Telephone Lines架设电话线 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 892 Solved: ...
- BZOJ 1614: [Usaco2007 Jan]Telephone Lines架设电话线
题目 1614: [Usaco2007 Jan]Telephone Lines架设电话线 Time Limit: 5 Sec Memory Limit: 64 MB Description Farm ...
- bzoj 1705;poj 3612:[Usaco2007 Nov]Telephone Wire 架设电话线
Description 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线. 新的电话线架设在已有的N(2 <= ...
- BZOJ_1705_[Usaco2007 Nov]Telephone Wire 架设电话线_DP
BZOJ_1705_[Usaco2007 Nov]Telephone Wire 架设电话线_DP Description 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是 ...
- 【bzoj1705】[Usaco2007 Nov]Telephone Wire 架设电话线 dp
题目描述 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线. 新的电话线架设在已有的N(2 <= N < ...
- bzoj 1705: [Usaco2007 Nov]Telephone Wire 架设电话线——dp
Description 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线. 新的电话线架设在已有的N(2 <= ...
- 【BZOJ】1705: [Usaco2007 Nov]Telephone Wire 架设电话线
[题意]给定一排n根杆高度hi,一个常数C,杆升高x的代价为x^2,相邻两杆之间架设电话线代价为高度差*C,求总代价最小. [算法]DP+辅助数组优化 [题解]令f[i][j]表示第i根杆高度为j的最 ...
- 【动态规划】bzoj1705: [Usaco2007 Nov]Telephone Wire 架设电话线
可能是一类dp的通用优化 Description 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线. 新的电话线架设 ...
- bzoj1705[Usaco2007 Nov]Telephone Wire 架设电话线(dp优化)
1705: [Usaco2007 Nov]Telephone Wire 架设电话线 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 441 Solved: ...
随机推荐
- Kubernetes K8S之通过helm部署metrics-server与HPA详解
Kubernetes K8S之通过helm部署metrics-server与 Horizontal Pod Autoscaling (HPA)详解 主机配置规划 服务器名称(hostname) 系统版 ...
- 文档驱动开发模式在 AIMS 中的应用与实践
摘要:程序员常会说:我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有一个很老的梗: 我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有这种想法的程序员应该算是一个老鸟了,对于大多 ...
- 用python+sklearn(机器学习)实现天气预报数据 数据
用python+sklearn机器学习实现天气预报 数据 项目地址 系列教程 勘误表 0.前言 1.爬虫 a.确认要被爬取的网页网址 b.爬虫部分 c.网页内容匹配取出部分 d.写入csv文件格式化 ...
- Python实验6--网络编程
题目1 1.编写程序实现基于多线程的TCP客户机/服务器程序. (1)创建服务器端套接字Socket,监听客户端的连接请求: (2)创建客户端套接字Socket,向服务器端发起连接: 服务器端套接字 ...
- g/test/s/lose/won/g
包含字符串test的任意行商,用lose代替won
- 给mysql选择调度策略
在gun/linux上,队列调度决定了到块设备的请求实际上发送到底层设置的顺序.默认情况下是cfg(完全公平排队)策略,随意使用的笔记本和台式机使用中个调度策略没有问题,并且有助于防止io饥饿,但是用 ...
- ftp交互和控制命令总结
一.FTP管理: 基于tcp,首先有客户端相服务端的知名端口21发起tcp连接建立ftp控制连接,控制连接在整个会话期间都保持打开,只用来发送连接/传送请求. 这里分为两种模式: 主动模式(PORT) ...
- 私有镜像仓库Harbor基础介绍与部署
企业级私有镜像仓库Harbor 一:介绍 Harbor,是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为dock ...
- QT串口助手(三):数据接收
作者:zzssdd2 E-mail:zzssdd2@foxmail.com 一.前言 开发环境:Qt5.12.10 + MinGW 实现的功能 串口数据的接收 ascii字符形式显示与hex字符形式显 ...
- flask文件下载
后端的代码 # coding:utf-8 from flask import Flask app = Flask(__name__) @app.route("/upload", m ...