diff --git a/graphes.md b/graphes.md
index c5645c257ca7366f949acc0de63c64f407668d3a..1932383e1b3f54b66b6d5c80af518ee6e0d12a2e 100644
--- a/graphes.md
+++ b/graphes.md
@@ -21,9 +21,13 @@ toc: false
 
 # Préambule
 
-Ce travail pratique est organisé en plusieurs parties traitant la notion de recherche de plus court chemin dans 
+<!-- Ce travail pratique est organisé en plusieurs parties traitant la notion de recherche de plus court chemin dans 
 un graphe. Il faudra implémenter les algorithmes de Floyd et de Dijkstra que vous avez vus en cours.
 Vous appliquerez ces algorithmes sur un graphe représentant 
+un certain nombre de lignes ferroviaires suisses. -->
+Ce travail pratique est organisé en plusieurs parties traitant la notion de recherche de plus court chemin dans 
+un graphe. Il faudra implémenter l'algorithme de Dijkstra que vous avez vus en cours.
+Vous appliquerez ces algorithmes sur un graphe représentant 
 un certain nombre de lignes ferroviaires suisses.
 Finalement, une partie graphique vous sera demandée pour rendre le travail un peu plus ludique.
 
@@ -85,14 +89,15 @@ qui sera utilisée pour la matrice d'adjacence dans ce travail est une ... matri
 # Lecture de fichier XML
 
 Dans un premier temps, vous devez construire les deux représentations des graphes
-discutées ci-dessus à partir du fichier XML, `villes.xml`, que vous trouverez sur Cyberlearn.
-Pour ce faire, il faut utiliser la librairie `libxml2`, ainsi que le code
-à trous se trouvant également sur Cyberlearn. Il s'agit ici de compléter ce code afin
+discutées ci-dessus à partir du fichier XML, [villes.xml](https://malaspinas.academy/prog_seq_c_tp/shortest_path/villes.xml), que vous trouverez sur Cyberlearn.
+Pour ce faire, il faut utiliser la librairie `libxml2` et les squelettes de code [xml_parser.h](https://malaspinas.academy/prog_seq_c_tp/shortest_path/xml_parser.h) et [xml_parser.c](https://malaspinas.academy/prog_seq_c_tp/shortest_path/xml_parser.c). Il s'agit ici de compléter ce code afin
 de faire deux choses:
 
 1. Créer un tableau contenant les noms des villes, ainsi que leurs positions sur la carte.
 2. A partir du tableau des villes et des informations de la connectivité, créer la liste et la matrice d'adjacence. Les poids des arêtes représentent le temps de parcours entre les villes.
 
+Puis, vous avez également un squelette de [main_dijkstra.c](https://malaspinas.academy/prog_seq_c_tp/shortest_path/squelette/c/main_dijkstra.c) contenant les formats d'entrées/sorties pour pouvoir comparer avec les tests, ainsi qu'un [Makefile](https://malaspinas.academy/prog_seq_c_tp/shortest_path/squelette/c/Makefile).
+
 ## Structures de données
 
 Vous devez donc créer différentes structures pour contenir
@@ -138,12 +143,40 @@ Ces données se trouvent dans le fichier texte, `suisse.txt`, que vous pouvez
 télécharger depuis Cyberlearn. Ce fichier ne contient que des paires d'entiers
 représentant la longitude et la latitude du pourtour de la Suisse. -->
 
-# Si vous avez terminé
+# Quand vous avez terminé
 
-Si vous avez terminé le travail ci-dessus, attaquez-vous aux algorithmes de Floyd et Dijkstra
+<!-- Si vous avez terminé le travail ci-dessus, attaquez-vous aux algorithmes de Floyd et Dijkstra
 que vous avez vus au cours d'algorithmique.
 N'oubliez pas de vous servir de la file de priorité
-pour l'algorithme de Dijkstra.
+pour l'algorithme de Dijkstra. -->
+
+Quand vous avez terminé le travail ci-dessus, attaquez-vous à l'algorithme de Dijkstra
+que vous avez vu au cours d'algorithmique.
+N'oubliez pas de vous servir de la file de priorité.
+
+# Tests
+
+## Exécuter le programme et rediriger les sorties standard et d'erreur dans un fichier
+
+```
+./monprog input.txt 1>std_output 2>err_output
+```
+
+Exécute le programme ```monprog``` avec l'argument ```input.txt``` et redirige la sortie standard dans le fichier ```std_output``` et la sortie d'erreur dans le fichier ```err_output```.
+
+## Comparer deux fichiers avec diff
+
+```diff``` est une commande qui permet de comparer deux fichiers, elle affiche le numéro des lignes et les lignes qui diffèrent entre deux fichiers et n'affiche rien si deux fichiers sont identiques.
+
+```
+diff -Z file1 file2
+```
+
+Compare deux fichiers sans tenir comptes des espaces à la fin des lignes. Si la sortie de votre programme est juste, la comparaison entre la sortie fournie et la sortie de votre programme ne devrait rien afficher.
+
+On vous fournit un fichier de tests complet avec ce travail pratique. En effet, le  fichier (cmd_a_tester_dijkstra.txt)[https://malaspinas.academy/prog_seq_c_tp/shortest_path/squelette/commandes_de_test/cmd_a_tester_dijkstra.txt] est le fichier contenant les entrées à fournir à votre programme et [output_dijkstra](https://malaspinas.academy/prog_seq_c_tp/shortest_path/squelette/results_out/output_dijkstra) sont les sorties attendues. Ainsi en comparant les sorties de votre programme
+quand vous lui fournissez `cmd_a_tester_dijkstra.txt` en argument devrait donner ce qui est contenu dans `output`. Sinon vous avez au moins un bug.
+
 
 # Remarques
 
@@ -166,7 +199,7 @@ faites les commandes suivantes:
      sudo pacman -Sy libxml2
      ```
 
-   Pour compiler avec les fichiers sources et obtenir le code objet vous dever utiliser l'option
+   Pour compiler avec les fichiers sources et obtenir le code objet vous devez utiliser l'option
    `-I` qui permet d'inclure un chemin spécifique.
 
    ```bash
@@ -179,5 +212,6 @@ faites les commandes suivantes:
    Il faut les rajouter pour que votre code remplisse les différentes structures de données
    nécessaires au bon déroulement de ce travail. Notez
    également que ces fonctions sont récursives.
+5. N'essayez pas de faire passer tous les tests d'un coup. Il faut faire ça de façon incrémentale.
 
 [^1]: Ils génèrent le code objet avec la commande `gcc -c xml_parser.c -I/usr/include/libxml2`.
\ No newline at end of file
diff --git a/squelette/c/Makefile b/squelette/c/Makefile
index c1c17e4a7a36632986a9978f5294dec7b14d7a8e..9c10f0c99a07060b33a2083bdfef03d05810add4 100644
--- a/squelette/c/Makefile
+++ b/squelette/c/Makefile
@@ -3,14 +3,17 @@ COMPILE_OPTS= -Wall -Wextra -g -std=gnu11
 OPTIM_OPTS= -O3
 SANITIZERS= -fsanitize=address -fsanitize=leak -fsanitize=undefined
 
-all: main 
+all: main_dijkstra
 
 main: main.o 
 	$(CC) $^ -o $@ $(LIBS) $(SANITIZERS) $(OPTIM_OPTS)
 
+main_dijkstra: main_dijkstra.o 
+	$(CC) $^ -o $@ $(LIBS) $(SANITIZERS) $(OPTIM_OPTS)
+
 %.o: %.c
 	$(CC) $(COMPILE_OPTS) $(OPTIM_OPTS) $(SANITIZERS) -c $^
 
 
 clean:
-	rm -f *.o *.gch main
+	rm -f *.o *.gch main main_dijkstra
diff --git a/squelette/c/main_dijkstra.c b/squelette/c/main_dijkstra.c
new file mode 100644
index 0000000000000000000000000000000000000000..7cbb5339080634e71263598df09e2a935a7a1efd
--- /dev/null
+++ b/squelette/c/main_dijkstra.c
@@ -0,0 +1,146 @@
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define PATH_SIZE 1000
+
+int main(int argc, char **argv) {
+
+  char *line = NULL;
+  char *str1 = NULL;
+  char *str2 = NULL;
+  size_t len = 0;
+  size_t len1 = 0;
+  size_t len2 = 0;
+  FILE *input = stdin;
+
+  if (argc > 1)
+    input = fopen(argv[1], "r\n");
+
+  char filepath[PATH_SIZE];
+  getcwd(filepath, PATH_SIZE);
+  strcat(filepath, "/villes.xml");
+  // lire le fichier villes.xml avec votre code
+  fprintf(stderr, "Le fichier XML %s a été chargé\n", filepath);
+
+  int choix = 0;
+  do {
+    // les impressions du menu sont envoyées sur le canal d'erreur
+    // pour les différencier des sorties de l'application
+    // lesquelles sont envoyées sur la sortie standard
+    fprintf(stderr, "Choix  0: quitter\n");
+    fprintf(stderr, "Choix  1: liste des villes\n");
+    fprintf(stderr, "Choix  2: matrice des poids\n");
+    fprintf(stderr, "Choix  3: liste des poids\n");
+    fprintf(stderr, "Choix  8: tableau des temps de parcours (Dijkstra)\n");
+    fprintf(stderr, "Choix  9: tableau des précédences (Dijkstra)\n");
+    fprintf(stderr,
+            "Choix 10: temps de parcours entre deux villes (Dijkstra)\n");
+    fprintf(stderr, "Choix 11: parcours entre deux villes (Dijkstra)\n");
+
+    fprintf(stderr, "Entrez votre choix: \n");
+    getline(&line, &len, input);
+    choix = atoi(line);
+    switch (choix) {
+    case 1:
+      // format de sortie -> à générer avec votre code
+      printf("[0:Geneve] [1:Lausanne] [2:Neuchatel] [3:Delemont] [4:Bale] "
+             "[5:Berne] [6:Lucerne] [7:Zurich] [8:Schaffouse] [9:St.-Gall] "
+             "[10:Coire] [11:St.-Moritz] [12:Bellinzone] [13:Andermatt] "
+             "[14:Sion]\n");
+      break;
+    case 2:
+      // format de sortie -> à générer avec votre code
+      // imprimer "inf" à la place INT_MAX
+      printf("0 34 inf inf inf inf inf inf inf inf inf inf inf inf inf\n");
+      printf("34 0 40 inf inf 67 inf inf inf inf inf inf inf inf 67\n");
+      printf("inf 40 0 49 87 42 inf inf inf inf inf inf inf inf inf\n");
+      printf("inf inf 49 0 34 60 inf inf inf inf inf inf inf inf inf\n");
+      printf("inf inf 87 34 0 66 73 60 inf inf inf inf inf inf inf\n");
+      printf("inf 67 42 60 66 0 83 79 inf inf inf inf inf inf 157\n");
+      printf("inf inf inf inf 73 83 0 46 inf inf inf inf 132 102 inf\n");
+      printf("inf inf inf inf 60 79 46 0 42 66 91 inf inf inf inf\n");
+      printf("inf inf inf inf inf inf inf 42 0 87 inf inf inf inf inf\n");
+      printf("inf inf inf inf inf inf inf 66 87 0 99 inf inf inf inf\n");
+      printf("inf inf inf inf inf inf inf 91 inf 99 0 116 inf 100 inf\n");
+      printf("inf inf inf inf inf inf inf inf inf inf 116 0 inf inf inf\n");
+      printf("inf inf inf inf inf inf 132 inf inf inf inf inf 0 84 inf\n");
+      printf("inf inf inf inf inf inf 102 inf inf inf 100 inf 84 0 162\n");
+      printf("inf 67 inf inf inf 157 inf inf inf inf inf inf inf 162 0\n");
+      break;
+    case 3:
+      // format de sortie -> à générer avec votre code
+      printf("Geneve [Lausanne:34]\n");
+      printf("Lausanne [Sion:67] [Berne:67] [Neuchatel:40] [Geneve:34]\n");
+      printf("Neuchatel [Berne:42] [Bale:87] [Delemont:49] [Lausanne:40]\n");
+      printf("Delemont [Berne:60] [Bale:34] [Neuchatel:49]\n");
+      printf("Bale [Zurich:60] [Lucerne:73] [Berne:66] [Delemont:34] "
+             "[Neuchatel:87]\n");
+      printf("Berne [Sion:157] [Zurich:79] [Lucerne:83] [Bale:66] "
+             "[Delemont:60] [Neuchatel:42] [Lausanne:67]\n");
+      printf("Lucerne [Andermatt:102] [Bellinzone:132] [Zurich:46] [Berne:83] "
+             "[Bale:73]\n");
+      printf("Zurich [Coire:91] [St.-Gall:66] [Schaffouse:42] [Lucerne:46] "
+             "[Berne:79] [Bale:60]\n");
+      printf("Schaffouse [St.-Gall:87] [Zurich:42]\n");
+      printf("St.-Gall [Coire:99] [Schaffouse:87] [Zurich:66]\n");
+      printf(
+          "Coire [Andermatt:100] [St.-Moritz:116] [St.-Gall:99] [Zurich:91]\n");
+      printf("St.-Moritz [Coire:116]\n");
+      printf("Bellinzone [Andermatt:84] [Lucerne:132]\n");
+      printf(
+          "Andermatt [Sion:162] [Bellinzone:84] [Coire:100] [Lucerne:102]\n");
+      printf("Sion [Andermatt:162] [Berne:157] [Lausanne:67]\n");
+      break;
+    case 8:
+      fprintf(stderr, "Ville d'origine: \n");
+      getline(&str1, &len1, input);
+      // format de sortie -> à générer avec votre code
+      printf(
+          "[Geneve:0] [Lausanne:34] [Neuchatel:74] [Delemont:123] [Bale:157] "
+          "[Berne:101] $[Lucerne:184] [Zurich:180] [Schaffouse:222] "
+          "[St.-Gall:246] [Coire:271] [St.-Moritz:387] [Bellinzone:316] "
+          "[Andermatt:263] [Sion:101]\n"); // résultat pour Geneve
+      break;
+    case 9:
+      fprintf(stderr, "Ville d'origine: \n");
+      getline(&str1, &len1, input);
+      // format de sortie -> à générer avec votre code
+      printf("[Geneve<-Lausanne] [Lausanne<-Neuchatel] [Neuchatel<-Delemont] "
+             "[Delemont<-Bale] [Lausanne<-Berne] [Berne<-Lucerne] "
+             "[Berne<-Zurich] [Zurich<-Schaffouse] [Zurich<-St.-Gall] "
+             "[Zurich<-Coire] [Coire<-St.-Moritz] [Lucerne<-Bellinzone] "
+             "[Sion<-Andermatt] [Lausanne<-Sion]\n"); // résultat pour Geneve
+      break;
+    case 10:
+      fprintf(stderr, "Ville d'origine: \n");
+      getline(&str1, &len1, input);
+      fprintf(stderr, "Ville de destination: \n");
+      getline(&str2, &len2, input);
+      fprintf(stderr, "Distance: ");
+      // format de sortie -> à générer avec votre code
+      // imprimer "inf" à la place INT_MAX
+      printf("%i\n", 267); // résultat pour Bale à St.-Moritz
+      break;
+    case 11:
+      fprintf(stderr, "Ville d'origine: \n");
+      getline(&str1, &len1, input);
+      fprintf(stderr, "Ville de destination: \n");
+      getline(&str2, &len2, input);
+      fprintf(stderr, "Parcours: ");
+      // format de sortie -> à générer avec votre code
+      printf("[Bale:Zurich:Coire:St.-Moritz]\n"); // résultat pour Bale à
+                                                  // St.-Moritz
+      break;
+    }
+  } while (choix != 0 && choix != 4 && choix != 5 && choix != 6 && choix != 7);
+
+  free(line);
+  free(str1);
+  free(str2);
+  fclose(input);
+
+  return 0;
+}
\ No newline at end of file
diff --git a/squelette/commandes_de_test/cmd_a_tester_dijkstra.txt b/squelette/commandes_de_test/cmd_a_tester_dijkstra.txt
new file mode 100644
index 0000000000000000000000000000000000000000..be1ddea1356210ed9d406835c2900efdf39aab5b
--- /dev/null
+++ b/squelette/commandes_de_test/cmd_a_tester_dijkstra.txt
@@ -0,0 +1,154 @@
+1
+2
+3
+8
+Geneve
+8
+Lausanne
+8
+Neuchatel
+8
+Delemont
+8
+Bale
+8
+Berne
+8
+Lucerne
+8
+Zurich
+8
+Schaffouse
+8
+St.-Gall
+8
+Coire
+8
+St.-Moritz
+8
+Bellinzone
+8
+Andermatt
+8
+Sion
+10
+Geneve
+Sion
+10
+Andermatt
+Coire
+10
+Schaffouse
+Lausanne
+10
+Lucerne
+Delemont
+10
+Coire
+Geneve
+10
+Bale
+Bellinzone
+10
+Andermatt
+Geneve
+10
+Lausanne
+Delemont
+10
+Neuchatel
+Bellinzone
+10
+Bellinzone
+Geneve
+10
+Sion
+Bale
+10
+Lausanne
+Geneve
+10
+St.-Moritz
+Geneve
+10
+Sion
+Schaffouse
+10
+St.-Gall
+Lausanne
+10
+Neuchatel
+Andermatt
+10
+Sion
+Neuchatel
+10
+Bale
+Geneve
+10
+Geneve
+Bale
+10
+Berne
+Bellinzone
+11
+Geneve
+Sion
+11
+Andermatt
+Coire
+11
+Schaffouse
+Lausanne
+11
+Lucerne
+Delemont
+11
+Coire
+Geneve
+11
+Bale
+Bellinzone
+11
+Andermatt
+Geneve
+11
+Lausanne
+Delemont
+11
+Neuchatel
+Bellinzone
+11
+Bellinzone
+Geneve
+11
+Sion
+Bale
+11
+Lausanne
+Geneve
+11
+St.-Moritz
+Geneve
+11
+Sion
+Schaffouse
+11
+St.-Gall
+Lausanne
+11
+Neuchatel
+Andermatt
+11
+Sion
+Neuchatel
+11
+Bale
+Geneve
+11
+Geneve
+Bale
+11
+Berne
+Bellinzone
+0
diff --git a/squelette/results_out/output_dijkstra b/squelette/results_out/output_dijkstra
new file mode 100644
index 0000000000000000000000000000000000000000..36a4a0eb9f50e5b362cb4039c70e6be5c1f152ea
--- /dev/null
+++ b/squelette/results_out/output_dijkstra
@@ -0,0 +1,86 @@
+[0:Geneve] [1:Lausanne] [2:Neuchatel] [3:Delemont] [4:Bale] [5:Berne] [6:Lucerne] [7:Zurich] [8:Schaffouse] [9:St.-Gall] [10:Coire] [11:St.-Moritz] [12:Bellinzone] [13:Andermatt] [14:Sion] 
+0 34 inf inf inf inf inf inf inf inf inf inf inf inf inf 
+34 0 40 inf inf 67 inf inf inf inf inf inf inf inf 67 
+inf 40 0 49 87 42 inf inf inf inf inf inf inf inf inf 
+inf inf 49 0 34 60 inf inf inf inf inf inf inf inf inf 
+inf inf 87 34 0 66 73 60 inf inf inf inf inf inf inf 
+inf 67 42 60 66 0 83 79 inf inf inf inf inf inf 157 
+inf inf inf inf 73 83 0 46 inf inf inf inf 132 102 inf 
+inf inf inf inf 60 79 46 0 42 66 91 inf inf inf inf 
+inf inf inf inf inf inf inf 42 0 87 inf inf inf inf inf 
+inf inf inf inf inf inf inf 66 87 0 99 inf inf inf inf 
+inf inf inf inf inf inf inf 91 inf 99 0 116 inf 100 inf 
+inf inf inf inf inf inf inf inf inf inf 116 0 inf inf inf 
+inf inf inf inf inf inf 132 inf inf inf inf inf 0 84 inf 
+inf inf inf inf inf inf 102 inf inf inf 100 inf 84 0 162 
+inf 67 inf inf inf 157 inf inf inf inf inf inf inf 162 0 
+Geneve [Lausanne:34] 
+Lausanne [Sion:67] [Berne:67] [Neuchatel:40] [Geneve:34] 
+Neuchatel [Berne:42] [Bale:87] [Delemont:49] [Lausanne:40] 
+Delemont [Berne:60] [Bale:34] [Neuchatel:49] 
+Bale [Zurich:60] [Lucerne:73] [Berne:66] [Delemont:34] [Neuchatel:87] 
+Berne [Sion:157] [Zurich:79] [Lucerne:83] [Bale:66] [Delemont:60] [Neuchatel:42] [Lausanne:67] 
+Lucerne [Andermatt:102] [Bellinzone:132] [Zurich:46] [Berne:83] [Bale:73] 
+Zurich [Coire:91] [St.-Gall:66] [Schaffouse:42] [Lucerne:46] [Berne:79] [Bale:60] 
+Schaffouse [St.-Gall:87] [Zurich:42] 
+St.-Gall [Coire:99] [Schaffouse:87] [Zurich:66] 
+Coire [Andermatt:100] [St.-Moritz:116] [St.-Gall:99] [Zurich:91] 
+St.-Moritz [Coire:116] 
+Bellinzone [Andermatt:84] [Lucerne:132] 
+Andermatt [Sion:162] [Bellinzone:84] [Coire:100] [Lucerne:102] 
+Sion [Andermatt:162] [Berne:157] [Lausanne:67] 
+[Geneve:0] [Lausanne:34] [Neuchatel:74] [Delemont:123] [Bale:157] [Berne:101] [Lucerne:184] [Zurich:180] [Schaffouse:222] [St.-Gall:246] [Coire:271] [St.-Moritz:387] [Bellinzone:316] [Andermatt:263] [Sion:101] 
+[Geneve:34] [Lausanne:0] [Neuchatel:40] [Delemont:89] [Bale:123] [Berne:67] [Lucerne:150] [Zurich:146] [Schaffouse:188] [St.-Gall:212] [Coire:237] [St.-Moritz:353] [Bellinzone:282] [Andermatt:229] [Sion:67] 
+[Geneve:74] [Lausanne:40] [Neuchatel:0] [Delemont:49] [Bale:83] [Berne:42] [Lucerne:125] [Zurich:121] [Schaffouse:163] [St.-Gall:187] [Coire:212] [St.-Moritz:328] [Bellinzone:257] [Andermatt:227] [Sion:107] 
+[Geneve:123] [Lausanne:89] [Neuchatel:49] [Delemont:0] [Bale:34] [Berne:60] [Lucerne:107] [Zurich:94] [Schaffouse:136] [St.-Gall:160] [Coire:185] [St.-Moritz:301] [Bellinzone:239] [Andermatt:209] [Sion:156] 
+[Geneve:157] [Lausanne:123] [Neuchatel:83] [Delemont:34] [Bale:0] [Berne:66] [Lucerne:73] [Zurich:60] [Schaffouse:102] [St.-Gall:126] [Coire:151] [St.-Moritz:267] [Bellinzone:205] [Andermatt:175] [Sion:190] 
+[Geneve:101] [Lausanne:67] [Neuchatel:42] [Delemont:60] [Bale:66] [Berne:0] [Lucerne:83] [Zurich:79] [Schaffouse:121] [St.-Gall:145] [Coire:170] [St.-Moritz:286] [Bellinzone:215] [Andermatt:185] [Sion:134] 
+[Geneve:184] [Lausanne:150] [Neuchatel:125] [Delemont:107] [Bale:73] [Berne:83] [Lucerne:0] [Zurich:46] [Schaffouse:88] [St.-Gall:112] [Coire:137] [St.-Moritz:253] [Bellinzone:132] [Andermatt:102] [Sion:217] 
+[Geneve:180] [Lausanne:146] [Neuchatel:121] [Delemont:94] [Bale:60] [Berne:79] [Lucerne:46] [Zurich:0] [Schaffouse:42] [St.-Gall:66] [Coire:91] [St.-Moritz:207] [Bellinzone:178] [Andermatt:148] [Sion:213] 
+[Geneve:222] [Lausanne:188] [Neuchatel:163] [Delemont:136] [Bale:102] [Berne:121] [Lucerne:88] [Zurich:42] [Schaffouse:0] [St.-Gall:87] [Coire:133] [St.-Moritz:249] [Bellinzone:220] [Andermatt:190] [Sion:255] 
+[Geneve:246] [Lausanne:212] [Neuchatel:187] [Delemont:160] [Bale:126] [Berne:145] [Lucerne:112] [Zurich:66] [Schaffouse:87] [St.-Gall:0] [Coire:99] [St.-Moritz:215] [Bellinzone:244] [Andermatt:199] [Sion:279] 
+[Geneve:271] [Lausanne:237] [Neuchatel:212] [Delemont:185] [Bale:151] [Berne:170] [Lucerne:137] [Zurich:91] [Schaffouse:133] [St.-Gall:99] [Coire:0] [St.-Moritz:116] [Bellinzone:184] [Andermatt:100] [Sion:262] 
+[Geneve:387] [Lausanne:353] [Neuchatel:328] [Delemont:301] [Bale:267] [Berne:286] [Lucerne:253] [Zurich:207] [Schaffouse:249] [St.-Gall:215] [Coire:116] [St.-Moritz:0] [Bellinzone:300] [Andermatt:216] [Sion:378] 
+[Geneve:316] [Lausanne:282] [Neuchatel:257] [Delemont:239] [Bale:205] [Berne:215] [Lucerne:132] [Zurich:178] [Schaffouse:220] [St.-Gall:244] [Coire:184] [St.-Moritz:300] [Bellinzone:0] [Andermatt:84] [Sion:246] 
+[Geneve:263] [Lausanne:229] [Neuchatel:227] [Delemont:209] [Bale:175] [Berne:185] [Lucerne:102] [Zurich:148] [Schaffouse:190] [St.-Gall:199] [Coire:100] [St.-Moritz:216] [Bellinzone:84] [Andermatt:0] [Sion:162] 
+[Geneve:101] [Lausanne:67] [Neuchatel:107] [Delemont:156] [Bale:190] [Berne:134] [Lucerne:217] [Zurich:213] [Schaffouse:255] [St.-Gall:279] [Coire:262] [St.-Moritz:378] [Bellinzone:246] [Andermatt:162] [Sion:0] 
+101
+100
+188
+107
+271
+205
+263
+89
+257
+316
+190
+34
+387
+255
+212
+227
+107
+157
+157
+215
+[Geneve:Lausanne:Sion]
+[Andermatt:Coire]
+[Schaffouse:Zurich:Berne:Lausanne]
+[Lucerne:Bale:Delemont]
+[Coire:Zurich:Berne:Lausanne:Geneve]
+[Bale:Lucerne:Bellinzone]
+[Andermatt:Sion:Lausanne:Geneve]
+[Lausanne:Neuchatel:Delemont]
+[Neuchatel:Berne:Lucerne:Bellinzone]
+[Bellinzone:Lucerne:Berne:Lausanne:Geneve]
+[Sion:Lausanne:Neuchatel:Delemont:Bale]
+[Lausanne:Geneve]
+[St.-Moritz:Coire:Zurich:Berne:Lausanne:Geneve]
+[Sion:Lausanne:Berne:Zurich:Schaffouse]
+[St.-Gall:Zurich:Berne:Lausanne]
+[Neuchatel:Berne:Lucerne:Andermatt]
+[Sion:Lausanne:Neuchatel]
+[Bale:Delemont:Neuchatel:Lausanne:Geneve]
+[Geneve:Lausanne:Neuchatel:Delemont:Bale]
+[Berne:Lucerne:Bellinzone]