introduzione
In questa sfida, ti viene dato un grafico diretto con auto-loop e il tuo compito è quello di convertirlo in un grafico non indirizzato senza auto-loop.
Ingresso
Il tuo input è un grafico diretto con il vertice impostato {0, 1, ..., n-1}
per un numero naturale n ≥ 0
(o {1, 2, ..., n}
se usi l'indicizzazione basata su 1). Il grafico viene fornito come un n
elenco di lunghezze in L
cui L[i]
è presente un elenco dei vicini del vertice i
. Ad esempio, l'elenco [[0,1],[0],[1,0,3],[]]
rappresenta il grafico
.-.
| v
'-0<--2-->3
^ |
| |
v |
1<--'
Si noti che gli elenchi dei vicini non sono necessariamente ordinati, ma sono garantiti come duplicati.
Produzione
L'output è un altro grafico nello stesso formato dell'input, ottenuto da esso come segue.
- Elimina tutti i loop automatici.
- Per ogni bordo rimanente
u -> v
, aggiungere il bordo rovesciatov -> u
se non è già presente.
Come per l'input, gli elenchi adiacenti del grafico di output potrebbero non essere ordinati, ma non possono contenere duplicati. Per il grafico sopra, sarebbe un output corretto [[1,2],[0,2],[0,1,3],[2]]
, che rappresenta il grafico
0<->2<->3
^ ^
| |
v |
1<--'
Regole
È possibile utilizzare l'indicizzazione basata su 0 o 1 nei grafici. Sono accettabili sia funzioni che programmi completi. Vince il conteggio di byte più basso e non sono consentite scappatoie standard.
Casi test
Questi casi di test utilizzano l'indicizzazione basata su 0; incrementa ogni numero nel caso 1-based. Questi elenchi vicini sono ordinati in ordine crescente, ma non è necessario.
[] -> []
[[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
stato appena cambiato dak,Y
ak,b
, quindi per eseguire questo, utilizzare.e-.|f}k@QTUQbkQ