POJ-3662 Telephone Lines---二分+最短路+最小化第k+1大
题目链接:
https://cn.vjudge.net/problem/POJ-3662
题目大意:
求一条路径从1到n使第k+1大的边最小。
解题思路:
二分答案mid,当原边权小于等于mid新边权为0,否则新边权为1.
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#define MID(l, r) (l + (r - l) / 2)
#define lson(o) (o * 2)
#define rson(o) (o * 2 + 1)
using namespace std;
typedef long long ll;
const int INF = 1e9 +;
const int maxn = 1e6 + ;
int n, m, k;
struct edge{
int u, v, w;
edge(int u, int v, int w):u(u), v(v), w(w){}
edge(){}
};
struct Heapnode
{
int d, u;
Heapnode(){}
Heapnode(int d, int u):d(d), u(u){}
bool operator <(const Heapnode & a)const
{
return d > a.d;
}
};
bool v[maxn];
int d[maxn]; int dijkstra(int s, int t, vector<edge>edges, vector<int>G[])
{
priority_queue<Heapnode>q;
for(int i = ; i <= n; i++)d[i] = INF;
d[s] = ;
memset(v, , sizeof(v));
q.push(Heapnode(, s));
while(!q.empty())
{
Heapnode now = q.top();
q.pop();
int u = now.u;
if(v[u])continue;
v[u] = ;
for(int i = ; i < G[u].size(); i++)
{
edge& e = edges[G[u][i]];
int v = e.v;
if(d[v] > d[u] + e.w)
{
d[v] = d[u] + e.w;
q.push(Heapnode(d[v], v));
}
}
}
return d[t];
} vector<edge>edges;
vector<int>G[maxn];
vector<edge>edges2;
void addedge(int u, int v, int w)
{
edges.push_back(edge(u, v, w));
int m = edges.size();
G[u].push_back(m - );
}
void init(int mid)
{
edges2.clear();
for(int i = ; i < edges.size(); i++)
{
edge& e = edges[i];
if(e.w <= mid)
{
edges2.push_back(edge(e.u, e.v, ));
}
else
{
edges2.push_back(edge(e.u, e.v, ));
}
}
}
int main()
{
scanf("%d%d%d", &n, &m, &k);
int l = , r = , u, v, w;
while(m--)
{
scanf("%d%d%d", &u, &v, &w);
addedge(u, v, w);
addedge(v, u, w);
r = max(r, w);
}
int ans = -;
while(l <= r)//l最开始要设置成0,不能设置成最小边,因为第k大可能为0
{
int mid = (l + r) / ;
init(mid);
int t = dijkstra(, n, edges2, G);
//cout<<mid<<" "<<t<<endl;
if(t <= k)
{
ans = mid;
r = mid - ;
}
else
{
l = mid + ;
}
}
cout<<ans<<endl;
return ;
}
POJ-3662 Telephone Lines---二分+最短路+最小化第k+1大的更多相关文章
- POJ 3662 Telephone Lines(二分+最短路)
查看题目 最小化第K大值. 让我怀疑人生的一题目,我有这么笨? #include <cstdio> #include <queue> #include <cstring& ...
- poj 3662 Telephone Lines(最短路+二分)
Telephone Lines Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6973 Accepted: 2554 D ...
- POJ 3662 Telephone Lines (二分+Dijkstra: 最小化第k大的值)
题意 Farmer John想从电话公司修一些电缆连接到他农场.已知N个电线杆编号为1,2,⋯N,其中1号已经连接电话公司,N号为农场,有P对电线杆可连接. 现给出P对电线杆距离Ai,Bi,Li表示A ...
- POJ 3662 Telephone Lines (二分+dijkstra)
题意: 多年以后,笨笨长大了,成为了电话线布置师.由于地震使得某市的电话线全部损坏,笨笨是负责接到震中市的负责人. 该市周围分布着N(1<=N<=1000)根据1……n顺序编号的废弃的电话 ...
- (poj 3662) Telephone Lines 最短路+二分
题目链接:http://poj.org/problem?id=3662 Telephone Lines Time Limit: 1000MS Memory Limit: 65536K Total ...
- poj 3662 Telephone Lines dijkstra+二分搜索
Telephone Lines Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5696 Accepted: 2071 D ...
- POJ 3662 Telephone Lines【Dijkstra最短路+二分求解】
Telephone Lines Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7214 Accepted: 2638 D ...
- poj 3662 Telephone Lines
Telephone Lines Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7115 Accepted: 2603 D ...
- poj 3662 Telephone Lines spfa算法灵活运用
意甲冠军: 到n节点无向图,它要求从一个线1至n路径.你可以让他们在k无条,的最大值.如今要求花费的最小值. 思路: 这道题能够首先想到二分枚举路径上的最大值,我认为用spfa更简洁一些.spfa的本 ...
随机推荐
- sql递归显示层级数据
;) as varchar(max)) as ssort from Category where ID = '123' union all select t.*, ) as varchar(max)) ...
- MyBatis中插入并返回主键
开发过程中经常遇到需要插入一条数据,并且返回这条数据自增的主键,在MyBatis中只需要在mapper中添加keyProperty属性即可 在mapper中添加keyProperty属性 <in ...
- Vue 引入第三方js.css的方式
转自:https://blog.csdn.net/csdn_yudong/article/details/78795743 我们以 jQuery 为例,来讲解 一.绝对路径直接引入,全局可用 主入口页 ...
- 撩课-Java每天5道面试题第16天
111.什么是乐观锁(Optimistic Locking)? 悲观锁,正如其名, 它指的是对数据被外界 包括本系统当前的其他事务, 以及来自外部系统的事务处理 修改持保守态度, 因此,在整个数据处理 ...
- 洛谷P3384 树链剖分
如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 操作2: 格式: 2 x ...
- Postman-Tests模块测试方法记录
用Postman的时候大多数测试结果是可以用Tests模块的测试方法来代替人工检查的,测试方法本质上是JavaScript代码,我们可以通过运行测试用例(测试脚本是在发送请求之后并且从服务器接收到响应 ...
- IE、火狐、谷歌浏览器下兼容统一select样式
项目开发时,对于不同浏览器下的select样式不统一问题,各种查,这里记录一下,项目已使用 IE浏览器下样式: 火狐浏览器下样式: 谷歌浏览器下样式: 上代码: 1.html 2.css 至此,大功告 ...
- 获取JPEGImageEncoder和JPEGCode这两个类
最近要对PDF做一些操作,在查看别人代码,拿过来借用的时候,由于代码不完整,引用的类也不全,导致JPEGImageEncoder和JPEGCode这两个类找不到,后来网上搜索了下,发现这两个类来自于J ...
- 安卓app开发-01-开发工具及环境配置
安卓app开发-01-开发工具及环境配置 请大家根据推荐指数和自己的意愿选择 使用 Android Studio 1.可以使用 Android Studio 下载地址:http://www.andro ...
- Java期中项目杂七杂八
这是一篇草稿,嗯,等结项以后大概可能会整理其中的一部分吧…… 杂项 1. 用Idea创建Maven项目:直接选就行:至于商定好的Eclipse要怎么做再说…… 2. 联网依赖:选择我们最熟的okhtt ...