P4334 [COI 2007] Policija
题目描述
为了帮助抓捕逃犯,警方引进了一套新的电脑系统。警察的辖区包含 $N$ 座城市和 $E$ 条双向道路,城市的编号是 $1\sim N$。
警察常常要抓住那些逃往另一个城市的罪犯。侦查员看着地图,试着确定在哪里设置路障。新的计算机系统要回答以下两种问题:
1. 考虑城市 $A$ 和 $B$,以及连接城市 $G_1$ 和 $G_2$ 的道路。罪犯能否在那条路不通的情况下从 $A$ 逃到 $B$?
2. 考虑三个城市 $A, B, C$。罪犯能否在无法通过 $C$ 的情况下从 $A$ 逃到 $B$?
写一个程序实现上述系统。
输入格式
第一行两个整数 $N, E$($2\leq N\leq 10 ^ 5$,$1\leq E\leq 5\times 10 ^ 5$),表示城市数量和道路数量。
接下来 $E$ 行,每行两个不同的数字 $u, v$,表示编号为 $u, v$ 的城市之间有一条道路。一对城市之间最多只有一条道路。
接下来一行,一个整数 $Q$($1\leq Q\leq 3\times 10 ^ 5$),表示询问数量。
接下来 $Q$ 行,每行四或五个整数描述一组询问。第一个数表示询问的类型 —— $1$ 或 $2$。
如果询问类型为 $1$,那么在同一行还有四个整数 $A, B, G_1, G_2$。$A, B$ 不同,且 $G_1, G_2$ 之间存在道路。
如果询问类型为 $2$,那么在同一行还有三个整数 $A, B, C$。$A, B, C$ 两两不同。
保证图中每两个点相互连通。
输出格式
对于每组询问,输出 `yes` 或 `no` 表示回答。
说明/提示
翻译自 [Croatian Olympiad in Informatics 2007 B Policija](https://hsin.hr/coci/archive/2006_2007/olympiad_tasks.pdf)。