有一天,VFleaKing到森林里游玩,回来之后跟pyx1997说,我发现好多棵会动的树耶!
pyx1997说,这有什么好稀奇的,我用手指头就能维护每棵树的形态。
于是又过了几天VFleaKing到沙漠里游玩,回来之后跟pyx1997说,我发现好多棵会动的仙人掌耶!
pyx1997说,这有什么好稀奇的,我用脚丫子就能维护每棵仙人掌的形态。
于是VFleaKing很郁闷,他向你求助,请帮帮他吧。
如果一个无向连通图的任意一条边最多属于一个简单环,我们就称之为仙人掌。
如果一个无向图的每个连通块都是个仙人掌,且不存在自环,我们就称之为沙漠。
为了证明你确实能够维护仙人掌,我们给你n个结点,从1到n标号。初始时没有任何边。每次进行如下操作之一:
1. link v u wA wB
在结点v, u间连一条权值A为wA、权值B为wB的边。1 <= v, u <= n且wA, wB为正整数。
如果连边完成后图仍为沙漠,则输出"ok"(不含引号)。
否则操作非法,撤销此次操作并输出"failed"(不含引号)。
2. cut v u wA wB 在结点v, u间删掉权值A为wA、权值B为wB的边。1 <= v, u <= n且wA, wB为正整数。
如果存在这样的边则输出"ok"(不含引号)(如果有多条权值A为wA、权值B为wB的边删去任意一条)。
否则操作非法,不进行操作并输出"failed"(不含引号)。
3. distance? v u 查询结点v到结点u的按权值A计算的最短路信息。1 <= v, u <= n, v != u。
输出两个用空格隔开的整数Lm, Wm。
Lm代表按权值A计算的最短路的长度,Wm代表最短路上的边的权值B的最小值。
如果没有路可到达则Lm = -1, Wm = -1。
如果最短路不唯一则Wm = -1。
4. add v u d 把结点v到结点u的按权值A计算的最短路上的每一条边的权值B都加上d。1 <= v, u <= n, v != u且d为正整数。
如果有路可到达且最短路唯一,则输出"ok"(不含引号)
否则操作非法,不进行操作并输出"failed"(不含引号)。