问题描述
给定一个无向图和依次应用于该图的查询。
有两种类型的查询。
cut - 切断图,即删除一条边。
ask - 检查两个顶点是否连通。
在所有的切割操作之后,图中将没有留下任何边。
你要找到所有ask查询的正确答案。
输入:
• 一行包括n,m和k (1 ≤ n ≤ 5 · 10^4, 0 ≤ m ≤ k ≤ 1.5 · 10^5) 分别代表顶点,边以及查询的数量。
• m行描述图的边,第i行包括ui 和 vi(1 ≤ ui, vi ≤ n):是与第i条边相联系的顶点的指数,该图不包含循环和重复的边。
• k行查询。
– 一个 cut-类型的查询需输入: “cut u v” (1 ≤ u, v ≤ n), 代表要切掉u和v之间的线。
– 一个 ask-类型的查询需输入: “ask u v” (1 ≤ u, v ≤ n), 代表你要查询u和v此时是否处于相同的连接部分,也就是连通性。
注意:可以保证每条边在cut查询中只出现一次
输出:
对于每一个ask查询,如果顶点在同一个连通的组件中,则输出答案 “YES”,否则输出 “NO”。
答案的顺序应与输入中的ask查询顺序相同。