Name the Crossing

http://www.ehime-u.ac.jp/ICPC/problems/domestic/d2004/F.jp/F.html
あー悩まされた。バグに(^^;
交差点を二つの通りの名前で構成するとき、どちらの通りが前に来るかで強弱関係がある。すでにある交差点の名前から強弱関係を読み取り、上げられた交差点の名前があり得る名前か判定せよ、という問題。
文字列の分割や登録といったJava向きの仕様があるけど、これをCで実装すること自体は簡単でした。さてそこからだ。道同士が「強い」「同格だ」という2種類の関係で有向グラフを形成する上、街は碁盤の目なので道が「東西」か「南北」か決定しないといけません。交差点の名前だけという情報から、どの通りがどっち向きなのかを決めないといけない。最後に引っかかったバグはここでした。ほかの通りと全然交わらない通りを起点に方角を決め始めると、方角が決まらないままの通りが残ってしまって交差判定ができなくなったり。
あとは、2重の有向グラフを扱っているややこしさに起因するバグの数々。これを1時間で解いたチームがいたとは日本も広い!