poj3662

大意:n个点p条边的无向图,求在删去k条边后使1和n号点联通路径上的最长边最小值。

一开始理解错题意以为是分层图求最短路径,结果写完发现k太大了发现事情没有那么简单(讨厌英语题面!)

说一下解法吧,二分答案,尽量小,每次二分完跑最短路径,但是要重置边权。即把比答案小的边改为0,比答案大的改为1,若最短路径比k大,就加答案;反之亦然。

(还好都有最短路径算没白写)

唯一的一点技巧:最初想着每次找完mid把所有边的权值改一下,觉得太麻烦了,那么就每次dijkstra加点的时候判断一下吧!(反正又占不了多少时间……吧)

#include<iostream>
#include<vector>
#include<cstdio>
#include<queue>
#include<cctype>
#include<algorithm>
#include<cstring>
using namespace std;
inline int read()
{
int x=0,w=0;char c=getchar();
while(!isdigit(c))w|=c=='-',c=getchar();
while(isdigit(c))x=(x<<3)+(x<<1)+(c^48),c=getchar();
return w?-x:x;
}
namespace star
{
const int maxn=1010,maxm=1000010;
int n,m,k;
int ecnt,head[maxn],nxt[maxm],t[maxm],val[maxm];
inline void addedge(int from,int to,int dis){
t[++ecnt]=to;nxt[ecnt]=head[from];head[from]=ecnt;val[ecnt]=dis;
}
typedef pair<int,int> pii;
int dis[maxn];
inline void dijkstra(int mid)
{
priority_queue<pii,vector<pii >,greater<pii > > q;
q.push(make_pair(0,1));
memset(dis,0x3f3f3f3f,sizeof dis);
dis[1]=0;
while(!q.empty())
{
int x=q.top().second;q.pop();
for(int i=head[x];i;i=nxt[i]){
int u=t[i];
if(dis[u]>dis[x]+(val[i]>mid)){
dis[u]=dis[x]+(val[i]>mid);
q.push(make_pair(dis[u],u));
}
}
}
} inline void work()
{
n=read(),m=read(),k=read();
int mlen=0;
for(int a,b,c,i=1;i<=m;i++)
{
a=read(),b=read(),c=read();
mlen=max(mlen,c);
addedge(a,b,c);
addedge(b,a,c);
}
int l=0,r=mlen;
while(l<r){
int mid=l+r>>1;
dijkstra(mid);
if(dis[n]==0x3f3f3f3f){
printf("-1\n");return;
}
if(dis[n]>k)l=mid+1;
else r=mid;
}
printf("%d\n",l);
}
}
int main()
{
star::work();
return 0;
}
/*
5 7 1
1 2 5
3 1 4
2 4 8
3 2 3
5 2 9
3 4 7
4 5 6
*/

最新文章

  1. EF事务嵌套
  2. 71.Android之长连接实现
  3. except ShortInputException,x中逗号
  4. Codeforces Round #282 (Div. 1) A. Treasure 水题
  5. 新手对css的浅识
  6. Codec plugins ? multiline
  7. Eclipse代码字体、颜色美化,更改字体大小、颜色
  8. TTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
  9. 【POJ】1067 取石子游戏(博弈论)
  10. Junit基本使用
  11. http,socks4,socks5代理的区别
  12. ArrayList 和LinkedList的区别?
  13. asp.net mvc Session RedisSessionStateProvider锁的实现
  14. Ubuntu16.10下使用VSCode开发.netcore
  15. 转:openwrt 框架分析
  16. CRC标准以及简记式
  17. (连通图 Tarjan)Caocao&#39;s Bridges --HDU --4738
  18. UFLDL学习笔记 ---- 主成分分析与白化
  19. MySQL搭建环境
  20. day09作业

热门文章

  1. Maven execution terminated abnormally (exit code 1) 完美解决
  2. LeetCode 每日一题「判定字符是否唯一」
  3. Spring Boot WebFlu-05——WebFlux 中 Thymeleaf 和 MongoDB 实践
  4. NOIP模拟测试9「随&#183;单&#183;题」
  5. Mysql优化(出自官方文档) - 第一篇(SQL优化系列)
  6. Java知识复习(四)
  7. js关于数组的操作(合并数组、添加数组、循环等)
  8. Python3中最常用的5种线程锁你会用吗
  9. 一、RabbitMQ 概念详解和应用
  10. 七、JavaSE语言基础之方法