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. C++ 引用的辨别

    对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率 ...

  2. Python爬虫scrapy-redis分布式实例(一)

    目标任务:将之前新浪网的Scrapy爬虫项目,修改为基于RedisSpider类的scrapy-redis分布式爬虫项目,将数据存入redis数据库. 一.item文件,和之前项目一样不需要改变 # ...

  3. Linux 系统默认运行级别设定

    #vi /etc/inittab,将 id:5:initdefault: 改为 id:3:initdefault: Linux 系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不 ...

  4. 重定向、feed输出:控制台输出的内容存放到文件

    重定向.feed输出:控制台输出的内容存放到文件 1.重定向 os.system('wget -r -p -np -k http://www.baidu.com/ -o wget.log' ) 2.f ...

  5. 基于Sql Server 2008的分布式数据库的实践

    配置Sql Server 2008(Win7) 1.打开SQL server2012,使用windows身份登录 2.登录后,右键选择“属性”.左侧选择“安全性”,选中右侧的“SQL Server 和 ...

  6. QQ-AR助人教版小学英语“动”起来

    日前,人教数字出版公司与腾讯QQ达成合作,将以小学英语3-6年级8本课本为合作试点,共同推出全国首个可AR识别的课本,在QQ-AR的帮助下,课本也能“动”起来,更加生动立体地展现在孩子眼前,让学习变得 ...

  7. Atom飞行手册翻译

    https://www.w3cschool.cn/atomflightmanualzhcn/

  8. PhotoSwipe中文API(五)

    Responsive Images PhotoSwipe不支持<图片>或srcset,因为它要求所定义的图像的尺寸,并使用延迟加载.但是,随着图像动态加载,它很容易切换人士透露,即便是在旧 ...

  9. Flask系列之自定义中间件

    from flask import Flask app = Flask(__name__) @app.route('/index') def index(): return 'Hello World' ...

  10. HDU4135Co-prime(容斥原理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4135 题目解析: 给你一个闭区间[A,B](1 <= A <= B <= 1015) ...