Poj3662 Usaco2008JanSilver Telephone Lines
来源:互联网 发布:淘宝代销价是什么意思 编辑:程序博客网 时间:2024/05/13 20:57
题目大意
给定N个点P条边的无向图,官方提供k条免费边。求如何去掉免费边,使剩下的边之中最大的边权最小,输出最大的边权
这题…最大的最小,很容易想到二分…而且这些边一定构成了最短路。
啊啊啊啊啊,我的代码在洛谷上过了,但是在poj上死活不过=。=
#include <cstdio>#include <queue>#include <iostream>#include <algorithm>#include <cstring>const int maxn = 100100;int n,m,begin,end,k,au[maxn],av[maxn],aw[maxn],diss[maxn],ans,r;struct edge{ int u,v,w,next,ww;} e[maxn];int a[maxn],num;inline void addedge(int u,int v,int w){ num++; e[num].u = u; e[num].v = v; e[num].w = w; e[num].next = a[u]; a[u] = num;}int dis[maxn],vis[maxn];struct st{ int n,w; bool operator <(const st &a) const{ return a.w < w; }};std::priority_queue<st> q;void dijkstra(int l){ memset(vis,0,sizeof(vis)); for(int i = 1;i <= n;i++) dis[i] = 0x7fffffff; dis[begin] = 0; q.push((st){begin,0}); while(!q.empty()){ int x = q.top().n; q.pop(); if (vis[x])continue; vis[x] = 1; for(int i = a[x];i;i = e[i].next){ int y = e[i].v; if(e[i].w > l) e[i].ww = 1; else e[i].ww = 0; if (dis[x] + e[i].ww < dis[y]){ dis[y] = dis[x] + e[i].ww; q.push((st){y,dis[y]}); } } }}bool check(int l) { dijkstra(l); if(dis[n] > k) return false; else return true;}int main(){ scanf("%d %d %d",&n,&m,&k); for(int i = 1;i <= m;i++){ int u,v,w; scanf("%d %d %d",&u,&v,&w); addedge(u,v,w); addedge(v,u,w); r = r < w ? w : r; } begin = 1; end = n; int l = 1; while(l <= r) { int mid = (l+r) >> 1; if(check(mid)) { ans = mid; r = mid-1; } else l = mid+1; } if(ans == 0) { printf("-1"); return 0; } printf("%d\n",ans);}
阅读全文
0 0
- Poj3662 Usaco2008JanSilver Telephone Lines
- POJ3662--Telephone Lines
- POJ3662-Telephone Lines
- POJ3662-Telephone Lines
- poj3662 Telephone Lines
- Poj3662 Telephone Lines (限制最短路)
- POJ3662 Telephone Lines 二分+最短路
- POJ3662 Telephone Lines [二分 最短路]
- POJ3662,洛谷1948 [USACO08JAN]电话线Telephone Lines
- POJ3662 Telephone Lines 二分+最短路
- Telephone Lines
- POJ 3662 Telephone Lines
- POJ 3662: Telephone Lines
- POJ-3662-Telephone Lines
- POJ 3662 Telephone Lines
- POJ-3662Telephone Lines
- POJ 3662 Telephone Lines
- [Usaco08Jan&luogu1948] Telephone Lines
- MySQL(4)常见使用命令:表内数据的增删改C(R)UD 查询select属于单独一类功能
- 简单单元测试 数组排序
- 机器学习:关联分析
- 动态代理的手动实现
- 06-多态
- Poj3662 Usaco2008JanSilver Telephone Lines
- Linux安装mysql
- 网络请求省市区实现UIPickerView三级联动
- 215. Kth Largest Element in an Array
- Photoshop 技能167个 经典的Photoshop技巧大全
- sorted and sort
- PV操作
- 基于c#的windows基础设计(学习日记1)【关于异或运算】
- transform: translateY(-50%) 实现元素垂直居中效果