POJ3662电缆
题目:http://poj.org/problem?id=3662
二分答案。然后边权>mid的边的边权2记为1,否则记为0。找一个边权2的最短路,看dis[n]是否<=K。
别忘了不能到达要输出-1。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define ll long long
using namespace std;
const int N=,M=,INF=;
int n,m,head[N],xnt,dis[N],K;
ll l,r,ans;
bool vis[N];
struct Edge{
int next,to;ll w;bool c;
Edge(int n=,int t=,ll w=,bool c=):next(n),to(t),w(w),c(c) {}
}edge[M<<];
void add(int x,int y,int z)
{
edge[++xnt]=Edge(head[x],y,z,);head[x]=xnt;
edge[++xnt]=Edge(head[y],x,z,);head[y]=xnt;
}
bool dj()
{
memset(dis,,sizeof dis);
memset(vis,,sizeof vis);
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > q;
dis[]=;q.push(make_pair(,));
while(q.size())
{
int k=q.top().second;q.pop();
while(vis[k]&&q.size())k=q.top().second,q.pop();
if(vis[k])break;vis[k]=;
for(int i=head[k],v;i;i=edge[i].next)
if(dis[k]+edge[i].c<dis[v=edge[i].to])
{
dis[v]=dis[k]+edge[i].c;q.push(make_pair(dis[v],v));
}
}
return dis[n]<=K;
}
int main()
{
scanf("%d%d%d",&n,&m,&K);int x,y;ll z;
for(int i=;i<=m;i++)
{
scanf("%d%d%lld",&x,&y,&z);
add(x,y,z);r=max(r,z);
}
while(l<=r)
{
ll mid=((l+r)>>);
for(int i=;i<=xnt;i++)
{
if(edge[i].w>mid)edge[i].c=;
else edge[i].c=;
}
if(dj())ans=mid,r=mid-;
else l=mid+;
}
if(dis[n]==INF)ans=-;
printf("%lld",ans);
return ;
}
POJ3662电缆的更多相关文章
- Eplan中电缆源和目标的确定规则
使用过Eplan的都知道,生成电缆总览时会有源和目标,电缆是怎么定义源和目标的呢,下面给大家讲解.确定源和目标按照下列规则确定电缆的源和目标: 首先考虑结构标识符中标识性的层结构说明.如果两端都是端子 ...
- linux 失败无连接 检查电缆吗
将BOOTPROTO=dhcp改成 BOOTPROTO=static 改成手动获取IP的模式 原因: 虚拟机中的Linux目前是默认设成的自动获取IP设置,但你的网络中没有DHCP服务,所以会显示“正 ...
- USB Type-C“三剑客”: 连接器、控制器和电缆
USB Type-C™是最新的有关电缆布线的USB连接器标准.您会看到,从笔记本电脑.智能手机.闪存到视频系统,这些设备上有一个小型可逆的Type-C连接器.由于Type-C电缆既可以给主机和设备提供 ...
- POJ3662 Telephone Lines( dijkstral + 二分 )
POJ3662 Telephone Lines 题目大意:要在顶点1到顶点n之间建一条路径,假设这条路径有m条边,其中有k条边是免费的,剩余m-k条边是要收费的, 求这m-k条边中花费最大的一条边的最 ...
- 解决ubuntu 14.04在显示屏电缆被拔出的问题
我是一个ubuntu14.04和win7双系统.于win在正常的网络.但在ubuntu网络连接有一直显示线被拔掉,您只能连接到无线Wi-Fi,没有有线网络. 关于这个问题,,最终找到的一种方式,这是进 ...
- poj3662 Telephone Lines【最短路】【二分】
http://poj.org/problem?id=3662 Telephone Lines Time Limit: 1000MS Memory Limit: 65536K Total Submi ...
- POJ-3662 Telephone Lines---二分+最短路+最小化第k+1大
题目链接: https://cn.vjudge.net/problem/POJ-3662 题目大意: 求一条路径从1到n使第k+1大的边最小. 解题思路: 二分答案mid,当原边权小于等于mid新边权 ...
- AOJ.850 电缆公司的烦恼 (二分+枚举)
AOJ.850 电缆公司的烦恼 (二分+枚举) 题意分析 从[1,average]二分枚举长度即可,由于保留2位小数,可以将数据扩大10^2倍后后枚举,输出时除100即可. 代码总览 #include ...
- Cable master 求电缆的最大长度(二分法)
Description Inhabitants of the Wonderland have decided to hold a regional programming contest. The J ...
随机推荐
- Anaconda ubuntu16.04 Cuda 8.0安装pytorch
Pytorch 安装 Pytorch安装真的太让人省心了,在anaconda的环境下进行安装,只需要一个命令 具体命令请查看官网pytorch 找到适合你的版本进行安装 本机环境: anaconda3 ...
- php 格式化时间
<?php echo date("Y/m/d") . "<br>"; echo date("Y.m.d") . " ...
- python 列表的递归求和
def list_sum(num_List): : ] else: ] + list_sum(num_List[:]) print(list_sum([, , , , ]))
- ABP zero出现Default language is not defined!的错误的解决方法
打开程序包管理器控制台,把EntityFramework作为默认项目,并且执行Update-Database命令 再运行项目
- jquery性能优化的十种方法
jquery性能优化的十种方法 有时候我们在书写jquery的时候,为了书写代码方便,往往忽略了程序执行过程中,给客户端带来的压力.随之而来的就是在某些低端浏览器或者低端电脑上运行速度缓慢,甚至无法运 ...
- ASP.NET常用的指令
指令的类型 指令 说明 Application 配置全局应用程序类 Assembly 注册用在Web窗体中的程序集.建议不使用此指令.而是NuGet. Control 配置用户控件 Implement ...
- spring的懒加载和depends-on
①延迟初始化Bean(惰性初始化Bean)是指不提前初始化Bean,而是只有在真正使用时才创建及初始化Bean. 配置方式很简单只需在<bean>标签上指定 “lazy-init” 属性 ...
- 【Matplotlib】线设置,坐标显示范围
改变线的颜色和线宽 参考文章: controlling line properties Line API 线有很多属性你可以设置:线宽,线型,抗锯齿等等:具体请参考matplotlib.lines.L ...
- POJ 1797 kruskal 算法
题目链接:http://poj.org/problem?id=1797 开始题意理解错.不说题意了. 并不想做这个题,主要是想测试kruskal 模板和花式并查集的正确性. 已AC: /* 最小生成树 ...
- POJ 3279 Fliptile 状态压缩,思路 难度:2
http://poj.org/problem?id=3279 明显,每一位上只需要是0或者1, 遍历第一行的所有取值可能,(1<<15,时间足够)对每种取值可能: 对于第0-n-2行,因为 ...