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$