introduction
Dans ce défi, vous obtenez un graphique dirigé avec des boucles automatiques et votre tâche consiste à le convertir en un graphique non dirigé sans boucles automatiques.
Contribution
Votre entrée est un graphique dirigé avec un sommet défini {0, 1, ..., n-1}
pour un certain nombre naturel n ≥ 0
(ou {1, 2, ..., n}
si vous utilisez une indexation basée sur 1). Le graphique est donné comme une n
liste de longueurs L
où L[i]
est une liste des voisins extérieurs du sommet i
. Par exemple, la liste [[0,1],[0],[1,0,3],[]]
représente le graphique
.-.
| v
'-0<--2-->3
^ |
| |
v |
1<--'
Notez que les listes de voisins ne sont pas nécessairement ordonnées, mais elles sont garanties sans doublon.
Production
Votre sortie est un autre graphique au même format que l'entrée, obtenu à partir de celui-ci comme suit.
- Supprimez toutes les boucles automatiques.
- Pour chaque bord restant
u -> v
, ajoutez le bord inversév -> u
s'il n'est pas déjà présent.
Comme pour l'entrée, les listes de voisins du graphique de sortie peuvent ne pas être triées, mais elles ne peuvent pas contenir de doublons. Pour le graphique ci-dessus, une sortie correcte serait [[1,2],[0,2],[0,1,3],[2]]
, qui représente le graphique
0<->2<->3
^ ^
| |
v |
1<--'
Règles
Vous pouvez utiliser l'indexation basée sur 0 ou basée sur 1 dans les graphiques. Les fonctions et les programmes complets sont acceptables. Le nombre d'octets le plus bas l'emporte et les failles standard sont interdites.
Cas de test
Ces cas de test utilisent une indexation basée sur 0; incrémenter chaque nombre dans le cas basé sur 1. Ces listes de voisins sont triées par ordre croissant, mais ce n'est pas obligatoire.
[] -> []
[[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
vient de passer dek,Y
àk,b
, donc pour exécuter cela, utilisez.e-.|f}k@QTUQbkQ