CF1857D Strong Vertices

题目描述

给定两个长度为 $n$ 的数组 $a$ 和 $b$,两个数组的下标均从 $1$ 到 $n$。你需要构建一个有向图,如果 $a_u - a_v \ge b_u - b_v$ 且 $u \neq v$,则从 $u$ 到 $v$ 存在一条有向边。 如果某个顶点 $V$ 存在一条路径可以到达所有其他顶点,则称顶点 $V$ 是强顶点。 在有向图中,一条路径是由若干顶点组成的链,这些顶点之间通过有向边连接,沿着边的方向可以从顶点 $u$ 到达顶点 $v$。 你的任务是找出所有强顶点。 例如,若 $a=[3,1,2,4]$,$b=[4,3,2,1]$,则该图如下所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1857D/d82544424ea2e3e9ac339f1c8fa7dad6ac60fbfc.png) 该图中只有编号为 $4$ 的顶点是强顶点。

输入格式

第一行包含一个整数 $t$($1\le t\le 10^4$),表示测试用例的数量。 每个测试用例的第一行包含一个整数 $n$($2 \le n \le 2\cdot 10^5$),表示数组 $a$ 和 $b$ 的长度。 每个测试用例的第二行包含 $n$ 个整数 $a_1,a_2,\dots,a_n$($-10^9 \le a_i \le 10^9$),表示数组 $a$。 每个测试用例的第三行包含 $n$ 个整数 $b_1,b_2,\dots,b_n$($-10^9 \le b_i \le 10^9$),表示数组 $b$。 保证所有测试用例中 $n$ 的总和不超过 $2\cdot 10^5$。

输出格式

对于每个测试用例,输出两行:第一行输出强顶点的数量,第二行按升序输出所有强顶点的编号。

说明/提示

第一个样例已在题目描述中给出。 对于第二个样例,图如下所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1857D/4f95c34528d6169c692c6bf6f2ed63814b90c73c.png) 该图中有两个强顶点,编号为 $3$ 和 $5$。注意,顶点 $3$ 和 $5$ 之间存在双向边。 对于第三个样例,两个顶点之间只有一条从顶点 $2$ 指向顶点 $1$ 的有向边,因此唯一的强顶点是 $2$。 对于第四个样例,所有顶点之间都存在双向边,因此每个顶点都可以到达任意其他顶点。 由 ChatGPT 4.1 翻译