CF2113E.From Kazan with Love

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Marat 是喀山的本地人。喀山可以表示为一个包含 nn 个顶点的无向树。在他年轻的时候,Marat 经常卷入街头斗殴,现在他有 mm 个敌人,这些敌人和他一样都住在喀山,编号从 11 到 mm。

每天,城市里的所有人都要去上班。Marat 知道他的第 ii 个敌人住在顶点 aia_i,工作在顶点 bib_i。他自己住在顶点 xx,工作在顶点 yy。保证 ai≠xa_i \ne x。

所有敌人都会沿着最短路径去上班,并且都在时刻 11 离开家。也就是说,如果我们用 c1,c2,c3,…,ckc_1, c_2, c_3, \ldots, c_k 表示从顶点 aia_i 到 bib_i 的最短路径(其中 c1=aic_1 = a_i,ck=bic_k = b_i),那么在时刻 pp(1≤p≤k1 \le p \le k)时,第 ii 个敌人会在顶点 cpc_p。

Marat 非常不想在同一时刻与任何一个敌人在同一个顶点相遇,因为这会造成尴尬的局面,但他们可以在一条边上相遇。Marat 也会在时刻 11 离开家,在之后的每一个时刻,他可以选择移动到相邻的顶点,或者留在当前位置。

注意,Marat 只能在时刻 2,3,…,k2, 3, \ldots, k(其中 c1,c2,…,ckc_1, c_2, \ldots, c_k 是从 aia_i 到 bib_i 的最短路径)与第 ii 个敌人相遇。换句话说,从敌人到达工作地点的时刻起,Marat 就无法再与他相遇。

请帮助 Marat 找到他能够不与任何敌人在路上相遇、最早到达工作的时刻,或者判断是否不可能做到。

输入格式

每个测试点包含多组测试用例。第一行包含测试用例数量 tt(1≤t≤1041 \le t \le 10^4)。每组测试用例的描述如下。

每组测试用例的第一行包含四个整数 nn、mm、xx 和 yy(2≤n≤1052 \le n \le 10^5,1≤m≤2001 \le m \le 200,1≤x,y≤n1 \le x, y \le n,x≠yx \ne y),分别表示树的顶点数、敌人数、Marat 的起点和终点。

接下来的 n−1n-1 行,每行包含两个整数 vjv_j 和 uju_j(1≤vj,uj≤n1 \le v_j, u_j \le n,vj≠ujv_j \ne u_j),表示树中的一条边。

接下来的 mm 行,每行包含两个整数 aia_i 和 bib_i(1≤ai,bi≤n1 \le a_i, b_i \le n,ai≠bia_i \ne b_i,ai≠xa_i \ne x),表示第 ii 个敌人的起点和终点。

保证所有测试用例中 nn 的总和不超过 10510^5。

输出格式

对于每组测试用例,输出一个整数,表示 Marat 最早能够到达工作的时刻,或者如果无法做到则输出 −1-1。

输入输出样例

  • 输入#1

    5
    4 1 1 4
    1 2
    2 3
    3 4
    4 1
    5 1 1 5
    1 2
    2 3
    3 4
    4 5
    5 1
    9 2 1 9
    1 2
    2 3
    3 4
    3 5
    5 6
    6 7
    6 8
    8 9
    9 1
    7 1
    9 2 7 2
    1 4
    2 5
    3 6
    4 5
    5 6
    4 7
    5 8
    6 9
    2 8
    3 7
    3 2 1 3
    1 2
    2 3
    2 1
    3 1

    输出#1

    4
    6
    10
    5
    -1

说明/提示

在第一个测试用例中,可以沿最短路径从顶点 11 到达顶点 44。注意,Marat 会在一条边上与敌人相遇,而不是在顶点上。

在第二个测试用例中,最优策略是在起点等待一段时间,然后再沿最短路径从顶点 11 到顶点 55。如果一开始不等待,Marat 会在顶点上与敌人相遇。

在第三个测试用例中,先从顶点 11 到达顶点 44,然后在该处等待一段时间,再沿最短路径从顶点 44 到顶点 99。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页