LA 6891 Money Transfers(最短路)
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(最短路)的更多相关文章
- LA 4223 最短路 路径选择要求提高一点
F - Trucking Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Statu ...
- timus 1210 Kind Spirits(最短路)(动态规划)
Kind Spirits Time limit: 1.0 secondMemory limit: 64 MB Ivanushka the Fool lives at the planet of 0-l ...
- [原]poj-2680-Choose the best route-dijkstra(基础最短路)
题目大意: 已知n 个点,m条路线,s为终点:给出m条路线及其权值:给出w个起点,求最短路! 思路:基础的dijkstra,有向无环正权最短路,只要把终点和起点 reverse考虑便可. AC代码如下 ...
- UVA 10537 The Toll! Revisited uva1027 Toll(最短路+数学坑)
前者之所以叫加强版,就是把uva1027改编了,附加上打印路径罢了. 03年的final题哦!!虽然是水题,但不是我这个只会做图论题的跛子能轻易尝试的——因为有个数学坑. 题意:运送x个货物从a-&g ...
- 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 ...
- POJ 3835 & HDU 3268 Columbus’s bargain(最短路 Spfa)
题目链接: POJ:http://poj.org/problem?id=3835 HDU:http://acm.hdu.edu.cn/showproblem.php?pid=3268 Problem ...
- [TJOI2012]桥(最短路+线段树)
有n个岛屿, m座桥,每座桥连通两座岛屿,桥上会有一些敌人,玩家只有消灭了桥上的敌人才能通过,与此同时桥上的敌人会对玩家造成一定伤害.而且会有一个大Boss镇守一座桥,以玩家目前的能力,是不可能通过的 ...
- POJ 1661 Help Jimmy(DP/最短路)
Help Jimmy Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14980 Accepted: 4993 Descripti ...
- JZOJ.5287【NOIP2017模拟8.16】最短路
Description
随机推荐
- C++ 引用的辨别
对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率 ...
- Python爬虫scrapy-redis分布式实例(一)
目标任务:将之前新浪网的Scrapy爬虫项目,修改为基于RedisSpider类的scrapy-redis分布式爬虫项目,将数据存入redis数据库. 一.item文件,和之前项目一样不需要改变 # ...
- Linux 系统默认运行级别设定
#vi /etc/inittab,将 id:5:initdefault: 改为 id:3:initdefault: Linux 系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不 ...
- 重定向、feed输出:控制台输出的内容存放到文件
重定向.feed输出:控制台输出的内容存放到文件 1.重定向 os.system('wget -r -p -np -k http://www.baidu.com/ -o wget.log' ) 2.f ...
- 基于Sql Server 2008的分布式数据库的实践
配置Sql Server 2008(Win7) 1.打开SQL server2012,使用windows身份登录 2.登录后,右键选择“属性”.左侧选择“安全性”,选中右侧的“SQL Server 和 ...
- QQ-AR助人教版小学英语“动”起来
日前,人教数字出版公司与腾讯QQ达成合作,将以小学英语3-6年级8本课本为合作试点,共同推出全国首个可AR识别的课本,在QQ-AR的帮助下,课本也能“动”起来,更加生动立体地展现在孩子眼前,让学习变得 ...
- Atom飞行手册翻译
https://www.w3cschool.cn/atomflightmanualzhcn/
- PhotoSwipe中文API(五)
Responsive Images PhotoSwipe不支持<图片>或srcset,因为它要求所定义的图像的尺寸,并使用延迟加载.但是,随着图像动态加载,它很容易切换人士透露,即便是在旧 ...
- Flask系列之自定义中间件
from flask import Flask app = Flask(__name__) @app.route('/index') def index(): return 'Hello World' ...
- HDU4135Co-prime(容斥原理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4135 题目解析: 给你一个闭区间[A,B](1 <= A <= B <= 1015) ...