https://vjudge.net/problem/UVALive-6891

题意:

给定一个加权无向图,还有起点和终点,现在有个SWERC公司,拥有图中的m个顶点,现在可以使图中的每一条边都加上k后求最短路,使得最短路上的点都包括在SWERC公司拥有的m个顶点中。求k的最大值。

思路:

对于k,采用二分法枚举。
我们可以求出起点到终点的最短路径,然后判断这些点是否都在SWERC公司当中即可。

还有容易错的一点!!

每个图中可能不止一条最短路,也许一条最短路时满足条件的,但是另外的是不满足的,那么这样也是不行的。

对于这个可以这样解决,在dijkstra算法当中,每次选择最短边加入时,在长度相同的情况下,我们优先选择不在SWERC公司中的顶点,这样这个问题就解决了。

 #include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<sstream>
#include<vector>
#include<stack>
#include<queue>
#include<cmath>
#include<map>
using namespace std;
typedef long long ll;
typedef pair<int,long long> pll;
const int INF=0x3f3f3f3f;
const int maxn=+; int n,p,src,dst,m; int sw[maxn];
ll d[maxn];
int vis[maxn];
int path[maxn]; vector<pll> G[maxn]; bool dijkstra(ll x)
{
memset(d,INF,sizeof(d));
memset(vis,,sizeof(vis));
memset(path,,sizeof(path)); d[src]=; for(int i=;i<=n;i++)
{
ll MIN =20000000000000LL;
int pos;
for(int j=;j<=n;j++)
{
if(d[j]<=MIN && !vis[j])
{
if(d[j]==MIN) {if(sw[j]==) pos=j;} //这个很重要,优先考虑不在SW中的点
else
{
MIN=d[j];
pos=j;
}
}
} if(MIN==20000000000000LL) break;
if(pos==dst) break;
vis[pos]=; for(int j=;j<G[pos].size();j++)
{
int v=G[pos][j].first;
if(vis[v]) continue;
ll w=G[pos][j].second+x;
if(d[pos]+w<d[v])
{
d[v]=d[pos]+w;
path[v]=pos;
}
}
} for(int i=dst;path[i]!=;i=path[i])
if(sw[i]==) return false; return true;
} int main()
{
//freopen("input.txt","r",stdin);
while(~scanf("%d%d%d%d",&n,&p,&src,&dst))
{
for(int i=;i<=n;i++) G[i].clear();
memset(sw,,sizeof(sw)); for(int i=;i<p;i++)
{
int a,b; ll c;
scanf("%d%d%lld",&a,&b,&c);
G[a].push_back(make_pair(b,c));
G[b].push_back(make_pair(a,c));
} scanf("%d",&m);
for(int i=;i<m;i++)
{
int x;
scanf("%d",&x);
sw[x]=;
} ll ans=;
ll L=,R=20000000000000LL;
while(L<=R)
{
ll mid=(L+R)/;
if(dijkstra(mid))
{
ans=mid;
L=mid+;
}
else R=mid-;
} if(ans==) puts("Impossible");
else if(ans==20000000000000LL) puts("Infinity");
else printf("%lld\n",ans);
}
return ;
}

LA 6891 Money Transfers(最短路)的更多相关文章

  1. LA 4223 最短路 路径选择要求提高一点

    F - Trucking Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Statu ...

  2. timus 1210 Kind Spirits(最短路)(动态规划)

    Kind Spirits Time limit: 1.0 secondMemory limit: 64 MB Ivanushka the Fool lives at the planet of 0-l ...

  3. [原]poj-2680-Choose the best route-dijkstra(基础最短路)

    题目大意: 已知n 个点,m条路线,s为终点:给出m条路线及其权值:给出w个起点,求最短路! 思路:基础的dijkstra,有向无环正权最短路,只要把终点和起点 reverse考虑便可. AC代码如下 ...

  4. UVA 10537 The Toll! Revisited uva1027 Toll(最短路+数学坑)

    前者之所以叫加强版,就是把uva1027改编了,附加上打印路径罢了. 03年的final题哦!!虽然是水题,但不是我这个只会做图论题的跛子能轻易尝试的——因为有个数学坑. 题意:运送x个货物从a-&g ...

  5. Codeforces Round #Pi (Div. 2) E. President and Roads tarjan+最短路

    E. President and RoadsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/567 ...

  6. POJ 3835 &amp; HDU 3268 Columbus’s bargain(最短路 Spfa)

    题目链接: POJ:http://poj.org/problem?id=3835 HDU:http://acm.hdu.edu.cn/showproblem.php?pid=3268 Problem ...

  7. [TJOI2012]桥(最短路+线段树)

    有n个岛屿, m座桥,每座桥连通两座岛屿,桥上会有一些敌人,玩家只有消灭了桥上的敌人才能通过,与此同时桥上的敌人会对玩家造成一定伤害.而且会有一个大Boss镇守一座桥,以玩家目前的能力,是不可能通过的 ...

  8. POJ 1661 Help Jimmy(DP/最短路)

    Help Jimmy Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14980 Accepted: 4993 Descripti ...

  9. JZOJ.5287【NOIP2017模拟8.16】最短路

    Description

随机推荐

  1. 什么是runtime?什么是webgl?

    一 什么是Runtime? Egret官方解释:https://www.egret.com/products/runtime.html 二.什么是WebGL渲染? egret官方解释:http://d ...

  2. 图片转成base64的字符串, 如何让图片在html中显示

    图片在服务端已编码成base64的字符串放在xml里面,客户端接受xml,取得base64的字符串后,请问如何让图片在html中显示? <img src="data:image/png ...

  3. 查看Oracle的redo日志切换频率

    1.Oracle log 每次切换会记录到告警日志中 设想写个方案来查看log切换频率来判断Oracle log是否应该更改大小. 2.sql a.查看redo日志信息 select * from v ...

  4. thinkphp---手机访问切换模板!

    手机访问切换模板:一般用在手机在做自适应的情况. 第一步:需要添加判断是否是手机访问的方法: http://www.cnblogs.com/e0yu/p/7561811.html 第二步:Home / ...

  5. 【深拷贝VS浅拷贝】------【巷子】

    1.回顾 数据传递的方法: 值传递:基本数据类型的数据不会发改变,因为基本数据类型一般存放在栈里面,值传递只是将数据拷贝了一份给另一个变量 引用传递:会改变内存中的数据,因为引用类型的数据都存放在堆里 ...

  6. Git Bash关键命令

    1.默认目录是C:\Users\用户名 2.切换目录:$cd c:\\windows 3.切换到上级目录:cd ..,中间有空格 4.列出某目录所有文件,相当于DOS下的dir:ls c:\\wind ...

  7. talib 中文文档(十二):Pattern Recognition Functions K线模式识别,形态识别

    Pattern Recognition Functions K线模式识别,形态识别 CDL2CROWS - Two Crows 函数名:CDL2CROWS 名称:Two Crows 两只乌鸦 简介:三 ...

  8. NGINX:sticky模块实现基于cookie的负载均衡

    Sticky模块 简述: 之前公司部署了一套网站及时发布系统,架构如下图所示:Nginx做前端代理,发布系统用tomcat运行,一台共享存储,一台数据库服务器:由于网站及时发布系统涉及到了用户登录操作 ...

  9. MVC4中使用Html.DropDownList实现级联

    本文记录了一个在MVC4中使用PartialView实现级联效果的小例子. 准备工作 首先准备一下要级联的数据,新建两个类:Province和City public class Province { ...

  10. Day21 过滤器(Filter)

    day21     过滤器(Filter) 过滤器概述   1 什么是过滤器 过滤器JavaWeb三大组件之一,它与Servlet很相似!不它过滤器是用来拦截请求的,而不是处理请求的. 当用户请求某个 ...