(最短路)17bupt新生赛——F. ch追妹



F. ch追妹 2017新生赛

时间限制 2000 ms 内存限制 65536 KB

题目描述

n个点的一张无向图,每条边长度为wi,ch站在a点,ch要追的妹子站在b点。ch可以使用一次膜法,将一条边的长度变为0。ch想知道他要追到妹子要走的最短路径。

输入格式

第一行为数据组数T(T≤10)。
每组数据的第一行为四个数 n,m,a,b(1≤a,b≤n≤10000,1≤m≤50000),分别表示点数,边数,ch的位置,妹子的位置。
之后m行,每行为三个数 u,v,w(1≤u,v≤n;1≤w≤10000),表示u,v之间有一条长度为w的无向边。数据保证没有重边和自环(即不会出现u到u的边,也不会出现两条u到v的边)。

输出格式

对每组数据输出一行,表示ch要走的最近距离。数据确保a可以到达b。

输入样例

2
2 1 1 2
1 2 2
4 4 1 4
1 2 2
2 4 2
1 3 1
3 4 10

输出样例

0
1

与普通的最短路差别在于可以将一条边长度改为0,为此用d[x] x∈[1,n]表示没有进行将某条边长度改为0的操作时到某点x的最短路长度,d[x+n]表示进行过一次将某条边长度改为0的操作时到某点x

的最短长度。
下面分析一下何时更新值。

采用dijkstra算法,每次到一个点u时,d[u]是最短的,此时u的取值有两种可能,一种是<=n,另一种是>n

如果是<=n,那么此时还没有进行将某边改为0的操作,将从u点连出去的所有边进行2种判断,设某边连到v点,边长为x。

若d[v]>d[u]+x,将d[v]更新为d[u]+x,并push入队列

若d[v+n]>d[u],将d[v+n]更新为d[u],push入队列

如果>n

若d[v+n]>d[u]

d[v+n]=d[u]push入队列。

整个队列用优先队列的方式维护。

时间: 2024-10-06 04:38:14

(最短路)17bupt新生赛——F. ch追妹的相关文章

2016年 河南工业大学校赛 H题.ch追妹

ch追妹 时间限制: 2 秒  内存限制: 128 MB  |  提交: 241  解决: 119 题目描述 n个点的一张无向图,ch站在a点,ch要追的妹子站在b点.r_clover为了让ch安心训练,要阻止ch追妹.ch每走一步,r_clover就会挖断一条路.ch和r_clover均采用最优策略,问ch能不能追到妹子 输入 第一行为数据组数T(T≤10). 每组数据的第一行为四个数 n,m,a,b(1≤a,b≤n≤20; 1≤m≤80),分别表示点数,边数,ch的位置,妹子的位置. 之后m

(dp)17bupt新生赛——B. Hmz 的女装

B. Hmz 的女装 2017新生赛 时间限制 1000 ms 内存限制 65536 KB 题目描述 Hmz为了女装,想给自己做一个长度为n的花环.现在有k种花可以选取,且花环上相邻花的种类不能相同.Hmz想知道,如果他要求第l朵花和第r朵花颜色相同,做花环的方案数是多少.这个答案可能会很大,你只要输出答案对109+7取模的结果即可. 输入格式 第一行三个整数n,m,k(1≤n≤100000,1≤m≤100000,1≤k≤100000)接下来m行,每行两个整数l,r,表示要求第l朵花和第r朵花颜

哈尔滨理工大学2016新生赛F题

给出两个正整数m,n,在笛卡尔坐标系中选出四个不同的点,满足: (1)   点的横坐标是一个在区间[0,m]的整数. (2)   点的纵坐标是一个在区间[0,n]的整数. (3)   这四个点做顶点构成一个菱形. 有多少种满足以上条件的选择方法呢? Input 多组测试数据,每组输入两个正整数m,n(m <= 1000, n <= 1000). 处理到文件结束. Output 每行输出一个整数,表示有多少满足条件的选择方法. Sample Input 2 2 Sample Output 6 #

SCNU 2015ACM新生赛决赛【F. Oyk闯机关】解题报告

题目大意:一个$N$$\times$$N$的阵列,每个格子有$X_{ij}$个调和之音,若每次只能选择走右边或下边,从左上角出发走到右下角,问最多能收集到多少个调和之音? 这题是一道很很很简单的DP题,但可能之前没接触过的同学需要一点脑能量去思考..如果用最蠢的办法,循环枚举每种选择,求出最大值的话,由于你总共需要往右走$N-1$次,往下走$N-1$次,路径总长度为$2N-2$,根据组合数学,总共有$C_{2N-2}^{N-1}$种走法,想想$C_{1998}^{999}$会是一个多么可怕的数字

广东工业大学2015新生赛round2(//自己脑洞堵了,madan!)

Path:新生赛 A.Number Sequence Description: A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. Given A, B, and n, you are to calculate the value of f(n). Analyse: 自动找周期法. CODE: int main() { int a,b,n;

测试赛F - Dragon Balls(并查集)

F - Dragon Balls Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Description Five hundred years later, the number of dragon balls will increase unexpectedly, so it's too difficult for Monkey King(WuKong) to

ZSC新生赛 沼跃鱼早已看穿了一切

Description 沼跃鱼打开密码门后发现门后是一个像迷宫一样的房间,墙上的指示牌写着:房间内某处有一宝箱,但是宝箱被上锁了,钥匙在这个房间的某个角落.沼泽鱼对宝箱里有什么很感兴趣,但它必须先去拿到钥匙才可以打开宝箱.然而沼跃鱼早已看穿了一切,它看清了这个房间的布局,现在给出房间的布局图,问沼跃鱼拿到钥匙并打开宝箱最少需要走多少步.沼跃鱼每次只能向上.下.左.右中其中一个方向走一步,但若那个位置是墙时则不能往那个位置走(显然,沼跃鱼不能穿墙). Input 输入的第一行是一个整数T(0<T<

哈理工新生赛热身赛解题报告

本次热身赛6道题目,由于没有官方解题报告,自己写了一个山寨版的解题报告,希望对学弟学妹有所帮助 期中两到签到题该校OJ上没有挂出,我在田大神的帮助下a掉了其它四题,解题报告如下所示 线段 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 10(6 users) Total Accepted: 7(6 users) Rating:  Special Judge: No Description 坐标轴上有一些点,依次给出.点与点之间要求用

北邮校赛 F. Gabriel&#39;s Pocket Money(树状数组)

F. Gabriel's Pocket Money 2017- BUPT Collegiate Programming Contest - sync 时间限制 2000 ms 内存限制 65536 KB 题目描述 For centuries, Heaven has required its young angels to live and study among humans in order to become full-fledged angels. This is no different