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
随机推荐
- 【Mac】Docker安装及基础使用
Docker 安装 在 Mac OS X 系统中,首先你要下载安装包安装:Docker Toolbox 安装过程中,可以选择是否安装 Docker Machine,Docker Compose 等,默 ...
- http://blog.csdn.net/ym19860303/article/details/8462450
http://www.himigame.com/iphone-cocos2d/444.html 很多游戏中,便于开发就会直接采用Cocos2d提供的字体库来使用,但是因为提供的种类很多,那么Himi利 ...
- ubuntu下安装meshlab
PPA 安装,打开终端,输入以下命令: sudo add-apt-repository ppa:zarquon42/meshlab sudo apt-get update sudo apt-get i ...
- 浅谈Java中的equals和==(转载)
在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String(&qu ...
- Kubernetes实战(二):k8s v1.11.1 prometheus traefik组件安装及集群测试
1.traefik traefik:HTTP层路由,官网:http://traefik.cn/,文档:https://docs.traefik.io/user-guide/kubernetes/ 功能 ...
- Python并行编程(十二):进程同步
1.基本概念 多个进程可以协同工作来完成一项任务,通常需要共享数据.所以在多进程之间保持数据的一致性就很重要,需要共享数据协同的进程必须以适当的策略来读写数据.同步原语和线程的库类似. - Lock: ...
- yum whatprovides 查找哪个包可以提供缺失的文件
yum whatprovides 查找哪个包可以提供缺失的文件
- Spring Boot 全局异常配置
Spring Boot 全局异常配置,处理异常控制器需要和发生异常的方法在一个类中.使用 ControllerAdvice 注解 package com.li.controller; import o ...
- PAT 1112 Stucked Keyboard[比较]
1112 Stucked Keyboard(20 分) On a broken keyboard, some of the keys are always stucked. So when you t ...
- 史上最全的MonkeyRunner自动化测试从入门到精通(1)
原文地址https://zhuanlan.zhihu.com/p/26043620 MonkeyRunner使用 #-*- coding:utf-8 –*- from com.android.monk ...