前書き
この課題では、自己ループのある有向グラフが与えられますが、タスクはそれを自己ループのない無向グラフに変換することです。
入力
入力は、頂点が{0, 1, ..., n-1}
自然数に設定された有向グラフですn ≥ 0
(または{1, 2, ..., n}
、1ベースのインデックス付けを使用する場合)。グラフはlength- n
list として与えられます。L
ここでL[i]
は、vertexの外側のリストi
です。たとえば、リスト[[0,1],[0],[1,0,3],[]]
はグラフを表します
.-.
| v
'-0<--2-->3
^ |
| |
v |
1<--'
ネイバーリストは必ずしも順序付けられているわけではありませんが、重複がないことが保証されていることに注意してください。
出力
出力は、次のように取得された、入力と同じ形式の別のグラフです。
- すべての自己ループを削除します。
- 残りの各エッジについて
u -> v
、反転エッジがv -> u
まだ存在しない場合は追加します。
入力と同様に、出力グラフの隣接リストは順序付けられていない場合がありますが、重複リストを含めることはできません。上記のグラフの場合、正しい出力はになり[[1,2],[0,2],[0,1,3],[2]]
、グラフを表します
0<->2<->3
^ ^
| |
v |
1<--'
ルール
グラフでは、0ベースまたは1ベースのインデックスを使用できます。機能と完全なプログラムの両方が許容されます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。
テストケース
これらのテストケースでは、0ベースのインデックス付けを使用します。1から始まる場合、各数値をインクリメントします。これらの隣接リストは昇順でソートされますが、必須ではありません。
[] -> []
[[0]] -> [[]]
[[],[0,1]] -> [[1],[0]]
[[0,1],[]] -> [[1],[0]]
[[0,1],[0],[1,0,3],[]] -> [[1,2],[0,2],[0,1,3],[2]]
[[3],[],[5],[3],[1,3],[4]] -> [[3],[4],[5],[0,4],[1,3,5],[2,4]]
[[0,1],[6],[],[3],[3],[1],[4,2]] -> [[1],[0,5,6],[6],[4],[3,6],[1],[1,2,4]]
[[6],[0,5,1],[5,4],[3,5],[4],[5,6],[0,3]] -> [[1,6],[0,5],[4,5],[5,6],[2],[1,2,3,6],[0,3,5]]
[[1,0],[5,1],[5],[1],[5,7],[7,1],[],[1]] -> [[1],[0,3,5,7],[5],[1],[5,7],[1,2,4,7],[],[1,4,5]]
[[2,8,0,9],[5,2,3,4],[0,2],[3,7,4],[8,1,2],[5,1,9,2],[6,9],[6,5,2,9,0],[9,1,2,0],[3,9]] -> [[2,7,8,9],[2,3,4,5,8],[0,1,4,5,7,8],[1,4,7,9],[1,2,3,8],[1,2,7,9],[7,9],[0,2,3,5,6,9],[0,1,2,4,9],[0,3,5,6,7,8]]
.e
からk,Y
に切り替えられたk,b
ので、これを実行するには、次を使用します.e-.|f}k@QTUQbkQ