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 ...
随机推荐
- Linux内核分析第一周-通过分析汇编代码理解计算机是如何工作的
首先,我们先写一个简单的C语言程序,如下: int g(int x) { return x +3; } int f(int x) { return g(x); } int main(void) { r ...
- [微信开发] - weixin4j关键类解析
TokenUtil : get()获取我方自定义的token(从配置文件或数据库) checkSignature(Str..... (服务器配置连接验证有效性) /* * 微信公众平台(JAVA) S ...
- adb: failed to install xxx.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package com.xxx.deliveryrobot signatures do not match the previously installed version; ignoring!]
解决方法:我是在安装软件时出现的这个错误,先卸载再安装即可 卸载: adb uninstall "com.yourapp.yourapp" 安装: adb install your ...
- mybatis之org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'time' in 'class java.lang.String'
mybatis接口 List<String> getUsedCate(String time); 配置文件 <select id="getUsedCate" pa ...
- zoj3261变形并查集
需要变形的并查集,这题错了好久,一直没a掉,终于在重写第三次的时候a了 先保存数据,把不需要拆分的边合并,逆向计算,需要拆分时就合并,之前不知道为啥写搓了,tle好久 #include<map& ...
- 大于号转义符>---小于号转义符<
< < < 小于号 > > > 大于号 ≤ ≤ ≤ 小于等于号 ≥ ≥ ≥ 大于等于号 " " " 引号 “ “ 左双引号 ” ” ...
- 019PHP基础知识——函数(二)
<?php /** * 变量的作用范围 * 函数体内的变量只作用于函数体内. */ /*$bbs="bbs.blog.com"; function say(){ $bbs=& ...
- 如何将Virtualbox和VMware虚拟机相互转换[译文211] - 转
迁移到其他的虚拟机程序可行会吓倒一批人.如果你已经按照自己的喜好设置好了虚拟机,那么就不需要再从头安装——你可以迁移现有的虚拟机. VirtualBox 和 VMware 使用不同的虚拟机格式,不过他 ...
- 使用百度地图SDK出现的问题及解决方法
1. 第一个错误信息如下: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.baiduma ...
- Go安装一些第三方库
原文链接:https://javasgl.github.io/go-get-golang-x-packages/ 侵权联系删除! go在go get 一些 package时候的会由于众所周知的原因而无 ...