programme g type sommetptr: ^sommet type listeptr: ^liste type sommet: enreg etiquette: entier couleur:entier distance:entier voisins: listeptr finenreg type liste: enreg premier: sommetptr reste: listeptr finenreg type graphe: tableau 1..100 de sommetptr /* seulement pour tester */ procedure initialise(ref g: graphe; val taille:entier) var ptr: sommetptr; debut pour i allant de 1 à taille allouer(ptr); g[i]:=ptr; g[i]^.etiquette:=i; g[i]^.voisins:=NUL finprocedure procedure unilien(ref g: graphe; val s1,s2:entier) var ptr, nouv:listeptr debut allouer(nouv); nouv^.premier:=g[s2]; ptr:=g[s1]^.voisins; si ptr=NUL OU ptr^.premier^.etiquette>s2 alors g[s1]^.voisins:=nouv; nouv^.reste:=ptr sinon tant que ptr^.reste!=NUL ET ptr^.reste^.premier^.etiquette