U19482 山村游历(Wander)
题目背景
### 因洛谷服务器不明原因造成数据丢失,想测题的话直接本地跟标程拍一拍吧~~咕咕咕~~
题目摘自WC模拟试题,数据自测,如有问题欢迎反馈
题目描述
在一个偏远的小镇上,有一些落后的山村。山村之间通过一些道路来连接。当然有的山村可能不连通。
一年当中会发生很多大事,比如说有人提议要在山村i与j之间修建一条道路,也有人觉得山村i和j之间的道路需要被拆掉。
由于小镇的落后,镇长不会允许存在两个山村i,j,他们存在超过一条路径到达对方。也就是说,假如在修建山村i,j之间的道路之前,它们已经连通了,那么这条道路就不会被修建。
但拆除道路就不一样了。假如有人建议拆除连接i,j的道路,并且i,j的确有道路相恋的话,镇长就会把它拆掉。
出了道路的修建与拆迁外,热情的山村人也会到处拜访其他人。有的时候来自山村i的人会想到山村j玩。
但山村人都是不识路的,那怎么办?他们有一种奇怪的遍历方式。
设一次旅行的起点为S,终点为T,点u的边集为V(i),那么这个走路过程可以用下面的伪代码来表示。
```pascal
DFS(u)
if u==T then
finish search
flag[u]
输入格式
第一行两个整数N,Q,表示小镇上总共有N个山村,一年中发生了Q件大事。
接下来$Q$行,每行包括三个整数$type,u,v$。
- 若$type=0$,表示有人建议在$u,v$之间修建一条道路。
- 若$type=1$,表示有人建议拆除$u,v$之间的道路。
- 若$type=2$,表示山村人要进行一次$u$出发到$v$结束的旅行。
输出格式
输出共Q行。
对于第i件大事,若$type=0$或$1$,假如这件大事能完成,则输出OK,否则输出ILLEGAL。若$type=2$,假如这次旅行能到达终点,则输出对应的时间评估,否则输出ILLEGAL。
对于每个时间评估,输出保留4位小数。
说明/提示
对于$100\%$的数据,$N≤100000,Q≤300000,1≤u,v≤N$