257)C,Dなど、解法自体は単純だがそこに至るまでの発想に少しまごつく問題があった。「ワープ辺のもう一方の端点」となっている頂点を「ワープ頂点」と呼ぶことにする。ワープ辺は全て同じ頂点に結びつけられる、というのがポイント。どこに結びつけられようと、最短経路においては同じ頂点を2回通るのは明らかに無駄。$N$この4タイプしかない。それぞれワープ辺を使わない全頂点への距離を求めておく。その時点で到達できない頂点への距離は、番兵として非常に大きな値を入れておくとよい。よらず固定なので事前に求められる。ついて4タイプを全て試して、最小値をとればよい。これが番兵と等しいなら、到達不可能となる。ワープ辺が1つもない場合に、最寄りのワープ頂点を計算しようとしてエラーを出さないように注意。問題の性質よりも「文字列アルゴリズム」の側から使えそうなものがないか探すというハックが有効に働く場合がある。prefixに関する問題で、Z-Algorithmが解法となるものは過去にも何回か出ている。求めるアルゴリズムだが、このままでは1つの文字列に対する情報しか得られない。文字目から」の一致を得ることができる。部分だけを取り出すと、以下のようになる。文字目まで構築可能文字数を伸ばせるよ」といえる。先頭から1文字目を構築可能なら、2文字目から最長5文字目までは'abaa'によって構築可能」である。最長、というのは、途中で切っても('abaa'のうち'aba'だけを利用しても)prefixであることに変わりは無いので問題ないため。更新回数+1が答えとなる。