题目描述
给定一个无向图G,写一个程序处理以下两种操作:
1. 删去一条边(u, v)
2. 询问两点u,v 是否连通
输入
输入文件的第一行包含三个整数n, m, q,依次代表图的顶点数、边数、询问的个数。
接下来m 行,每行两个整数u, v,描述图中的一条边(u; v)。接下来q 行,每行三个整数t, u, v,描述一个操作。若t = 1 则操作代表删去边(u; v),否则操作代表询问点u 和v 是否连通。数据保证删除的边一定存在。
输出
对于每个询问操作输出一行字符串“Yes”(连通)或者“No”(不连通)。
样例输入
3 2 4
1 2
2 3
2 1 2
1 1 2
2 1 3
2 2 3
样例输出
Yes
No
Yes
提示
40%数据, n<=100, m<=1000, q<=1000
100%数据, n <=1000, m <= 100000, q <= 100000,可能存在重边。
并查集+逆向思维
考试的时候写了个广搜,觉得会超时,结果运行错误,只拿了30,让我百思不得其解。回家检查代码,结果发现打错了两个字母。。。(第一次这么手贱)其实不打错的话有80。。。
这题只要反着想就很简单了,先把所有边删光,把q个信息都储存下来离线操作。然后倒着来,是1就把两个端点并起来,是2就判断是否在同一集合中