CF1476C Longest Simple Cycle

题目描述

你有 $n$ 条链,第 $i$ 条链包含 $c_i$ 个顶点。每条链上的顶点编号独立,从 $1$ 到 $c_i$。换句话说,第 $i$ 条链是一个有 $c_i$ 个顶点的无向图,且有 $c_i-1$ 条边,分别连接第 $j$ 个顶点和第 $j+1$ 个顶点($1 \le j < c_i$)。 现在你决定按如下方式将这些链合并成一个图: 1. 跳过第一条链; 2. 将第 $i$ 条链的第 $1$ 个顶点与第 $i-1$ 条链的第 $a_i$ 个顶点连接一条边; 3. 将第 $i$ 条链的最后一个(第 $c_i$ 个)顶点与第 $i-1$ 条链的第 $b_i$ 个顶点连接一条边。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1476C/c3d2e7e1f5aff9aaa07bb3c082d03d1303c3b897.png) 上图为第一个测试用例的示意图。虚线为合并过程中添加的边。 请计算合并后所得图中最长的简单环的长度。 一个简单环是指首尾相连的链,且在环上每个顶点只访问一次。

输入格式

第一行包含一个整数 $t$($1 \le t \le 1000$),表示测试用例的数量。 每个测试用例的第一行包含一个整数 $n$($2 \le n \le 10^5$),表示链的数量。 每个测试用例的第二行包含 $n$ 个整数 $c_1, c_2, \dots, c_n$($2 \le c_i \le 10^9$),表示每条链上的顶点数。 每个测试用例的第三行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($a_1 = -1$,$1 \le a_i \le c_{i-1}$)。 每个测试用例的第四行包含 $n$ 个整数 $b_1, b_2, \dots, b_n$($b_1 = -1$,$1 \le b_i \le c_{i-1}$)。 保证 $a_1$ 和 $b_1$ 都等于 $-1$,它们不会用于建图,仅用于下标对齐。保证所有测试用例中 $n$ 的总和不超过 $10^5$。

输出格式

对于每个测试用例,输出合并后所得图中最长简单环的长度。

说明/提示

在第一个测试用例中,最长的简单环如下图所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1476C/85078a1da0cf5e3248371659b535343ffec9669a.png) 无法通过第一条链增加环的长度,否则就不是简单环了——第二条链上的顶点 $2$ 会被重复访问。 由 ChatGPT 4.1 翻译