Maison > Questions et réponses > le corps du texte
PHP中文网2017-04-18 10:50:59
Il y a n nœuds.
Convertissez l'arbre en un graphe non orienté, puis utilisez des algorithmes de chemin le plus court à source unique n fois tels que dijkstra et spfa ou l'algorithme de chemin le plus court multi-source 1-time floyd pour trouver les valeurs de n'importe quel deux nœuds. Mais lorsque n est relativement grand, la surcharge mémoire liée au stockage de la valeur est importante.
Faites de l'arbre un arbre enraciné, et chaque nœud i stocke la distance di à la racine. Lors de l'interrogation de deux nœuds di,dj, recherchez l'ancêtre commun dk des deux nœuds, puis d(i,j)=di+dj-dk*2. Pour plus d'informations sur les ancêtres communs, veuillez vous référer à l'algorithme de Tarjan.