Rumah > Soal Jawab > teks badan
PHP中文网2017-04-18 10:50:59
Terdapat n nod.
Tukar pepohon kepada graf tidak terarah, dan kemudian gunakan algoritma laluan terpendek sumber tunggal n-masa seperti dijkstra dan spfa atau algoritma laluan terpendek berbilang sumber floyd 1 kali untuk mencari nilai mana-mana dua nod. Tetapi apabila n agak besar, overhed memori untuk menyimpan nilai adalah besar.
Jadikan pokok sebagai pokok berakar, dan setiap nod i menyimpan jarak di ke akar. Apabila menanyakan dua nod di,dj, cari dk moyang sepunya bagi kedua-dua nod itu, kemudian d(i,j)=di+dj-dk*2. Untuk maklumat tentang nenek moyang yang sama, sila rujuk algoritma Tarjan.