#3763. 解决难题
解决难题
题目描述
陶陶是信息社团唯一的女孩,最近他们在进行省队选拔的训练。教练给他们出了一道最短路问题的题目。
给定一个带权的有向图 。对于图 有以下两个操作:
-
在图中标记一个点。
-
仅通过标记的点找到两个点之间的最短路径。
陶陶第一次面对这样的问题,她有些不会并且非常无助。此时,社团的明明决定帮助陶陶解决这个问题。在明明的帮助下,陶陶立即解决了这个问题,非常欣赏明明。从那以后,每当陶陶遇到问题时,她总是打电话和明明一起解决问题。当然,明明很高兴为陶陶提供帮助。最后,众所周知,明明和陶陶成为编程爱好者。
请问您也能帮她解决这个最短路径问题吗?
输入格式
输入第一行包含三个整数 ,和 (),其中 是给定图中点的数量,为边的数量,表示操作数,所有顶点的数字分别为 .最开始,所有顶点均未标记。
接下来的 条边,每条边均用三个整数()来描述边:起点 和终点 的权值为 。
接下来的 行每行都描述一个操作,其中操作0 x表示标记了点 x,操作1 x y仅通过标记的顶点找到 和 之间的最短路径。
输出格式
对于操作0 x,如果已经标记了点 ,则输出“ ERROR! At point x”。
对于操作1 x y,如果未标记点 x 或点 y,则输出“ERROR! At path x to y”;如果无法通过标记点从 到达 ,则输出“No such path”;否则,输出最短路径的长度。
样例
输入
5 10 10
1 2 6335
0 4 5725
3 3 6963
4 0 8146
1 2 9962
输出
1 0 1943
2 1 2392
4 2 154
2 2 7422
1 3 9896
0 1
0 3
0 2
0 4
0 4
0 1
1 3 3
1 1 1
0 3
0 4
0 0 0
ERROR! At point 4
ERROR! At point 1
0
0
ERROR! At point 3
ERROR! At point 4