题目: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电缆的更多相关文章

  1. Eplan中电缆源和目标的确定规则

    使用过Eplan的都知道,生成电缆总览时会有源和目标,电缆是怎么定义源和目标的呢,下面给大家讲解.确定源和目标按照下列规则确定电缆的源和目标: 首先考虑结构标识符中标识性的层结构说明.如果两端都是端子 ...

  2. linux 失败无连接 检查电缆吗

    将BOOTPROTO=dhcp改成 BOOTPROTO=static 改成手动获取IP的模式 原因: 虚拟机中的Linux目前是默认设成的自动获取IP设置,但你的网络中没有DHCP服务,所以会显示“正 ...

  3. USB Type-C“三剑客”: 连接器、控制器和电缆

    USB Type-C™是最新的有关电缆布线的USB连接器标准.您会看到,从笔记本电脑.智能手机.闪存到视频系统,这些设备上有一个小型可逆的Type-C连接器.由于Type-C电缆既可以给主机和设备提供 ...

  4. POJ3662 Telephone Lines( dijkstral + 二分 )

    POJ3662 Telephone Lines 题目大意:要在顶点1到顶点n之间建一条路径,假设这条路径有m条边,其中有k条边是免费的,剩余m-k条边是要收费的, 求这m-k条边中花费最大的一条边的最 ...

  5. 解决ubuntu 14.04在显示屏电缆被拔出的问题

    我是一个ubuntu14.04和win7双系统.于win在正常的网络.但在ubuntu网络连接有一直显示线被拔掉,您只能连接到无线Wi-Fi,没有有线网络. 关于这个问题,,最终找到的一种方式,这是进 ...

  6. poj3662 Telephone Lines【最短路】【二分】

    http://poj.org/problem?id=3662 Telephone Lines Time Limit: 1000MS   Memory Limit: 65536K Total Submi ...

  7. POJ-3662 Telephone Lines---二分+最短路+最小化第k+1大

    题目链接: https://cn.vjudge.net/problem/POJ-3662 题目大意: 求一条路径从1到n使第k+1大的边最小. 解题思路: 二分答案mid,当原边权小于等于mid新边权 ...

  8. AOJ.850 电缆公司的烦恼 (二分+枚举)

    AOJ.850 电缆公司的烦恼 (二分+枚举) 题意分析 从[1,average]二分枚举长度即可,由于保留2位小数,可以将数据扩大10^2倍后后枚举,输出时除100即可. 代码总览 #include ...

  9. Cable master 求电缆的最大长度(二分法)

    Description Inhabitants of the Wonderland have decided to hold a regional programming contest. The J ...

随机推荐

  1. kernel: swapper: page allocation failure. order:1, mode:0x20

    场景:领导电话通知,我们的主站宕机了,到家后从另外一台机器上ssh一直处于等待状态,开始怀疑机器的负载比较高,后查看监控机器,发现网卡.cpu.nginx连接数.....通通都没有数据了,显然不是负载 ...

  2. fiddler几种功能强大的用法(一)

    参考网址: http://caibaojian.com/fiddler.html http://www.cnblogs.com/tangdongchu/p/4178552.html 1.fiddler ...

  3. [转]Python的getattr(),setattr(),delattr(),hasattr()

    getattr()函数是Python自省的核心函数,具体使用大体如下: 获取对象引用getattrGetattr用于返回一个对象属性,或者方法 class A: def __init__(self): ...

  4. [WCF安全2]使用wsHttpBinding构建UserName授权的WCF应用程序,非SSL

    上一篇文章中介绍了如何使用basicHttpBinding构建UserName授权的WCF应用程序,本文将为您介绍如何使用wsHttpBinding构建非SSL的UserName安全授权的WCF应用程 ...

  5. 使用由 Intel MKL 支持的 R

    我们通常使用的 R 版本是单线程的,即只使用一个 CPU 线程运行所有 R 代码.这样的好处是运行模型比较简单且安全,但是它并没有利用多核计算.Microsoft R Open(MRO,https:/ ...

  6. Django配置让其他电脑访问网站(包括:修改IP和端口)

    http://blog.sina.com.cn/s/blog_9c5364110101fyk7.html

  7. Web开发中的显示与隐藏

    大多数编程语言,在平开发过程中,都是会遇到一些特殊的场景,需要实现显示或者隐藏来达到我们想要的效果:然而实现的方式有多种,今天就写一下,希望可以帮到各位. 小编我学习前端1年了,特意写写博客来回顾一下 ...

  8. bzoj1054: [HAOI2008]移动玩具 状压+爆搜即可

    题意:在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将初的玩具状态 ...

  9. HTML字符转码

    以下是HTML特殊字符的编码表: 标记 编码 实际名称 ™ ™ € € Space   ! ! " " " # # $ $ % % & & & ' ...

  10. 解决IE6中img标签 图片透明

    <!--[if IE 6]> <script type="text/javascript"> function correctPNG() { for (va ...