#T1267. [GESP202312 七级T1] 商品交易

[GESP202312 七级T1] 商品交易

题目背景

2023 年 12 月 GESP C++ 七级编程第 1 题

题目描述

市场上共有 NN 种商品,编号从 00N1N-1,第 ii 种商品价值 viv_i 元。共有 MM 个商人,编号从 00M1M-1。在第 jj 个商人处,可以用第 xjx_j 种商品交换第 yjy_j 种商品。

每次交易的花费为 vyjvxj+1v_{y_j}-v_{x_j}+1,其中 11 元为手续费;若该值为负数,表示这次交易后你反而赚到了钱。

你初始拥有商品 aa,希望通过若干次交换获得商品 bb。请计算达成目标的最小总花费;若无法获得商品 bb,输出 No solution

输入格式

第一行输入四个整数 N,M,a,bN,M,a,b,分别表示商品数量、商人数量、初始商品和目标商品。 第二行输入 NN 个正整数 v0,v1,ldots,vN1v_0,v_1,ldots,v_{N-1}。 接下来 MM 行,每行输入两个整数 xi,yix_i,y_i,表示第 ii 个商人支持用商品 xix_i 交换商品 yiy_i

输出格式

输出一行。若能够通过交换获得商品 bb,输出一个整数,表示最少花费;否则输出 No solution

3 5 0 2
1 2 4
1 0
2 0
0 1
2 1
1 2
5
3 3 0 2
100 2 4
0 1
1 2
0 2
-95

数据范围与提示

  • 对于 30%30\% 的测试点,保证 N10N\le 10M20M\le 20
  • 对于 70%70\% 的测试点,保证 N103N\le 10^3M104M\le 10^4
  • 对于全部测试点,保证 2N1052\le N\le 10^51M2×1051\le M\le 2\times 10^50a,b,xi,yi<N0\le a,b,x_i,y_i<Naba\ne bxiyix_i\ne y_i1vi1091\le v_i\le 10^9
  • 最小花费可能为负数。

来源

GESP 2023 年 12 月 C++ 七级 T1