<prompt> Andika programu ya Go inayokokotoa njia fupi zaidi kati ya nodi mbili kwenye grafu yenye uzani kwa kutumia algoriti ya Dijkstra.  <response>: Hapa kuna programu ya Go ambayo huhesabu njia fupi kati ya nodi mbili kwenye grafu yenye uzani kwa kutumia algorithm ya Dijkstra:nendakifurushi kikuukuagiza chombolundofmtchapa muundo wa Edge kwa intuzito intchapa muundo wa Grafu nodi ramaniintEdgefunc NewGraph Grafu return Graphnodes: makemapintEdgefunc g Grafu AddEdgekutoka, hadi, uzito int g.nodikutoka kiambatishog.nodikutoka, Kingohadi: hadi, uzito: uzitog.nodito ongezag.nodito, Kingohadi:kutoka,uzito:uzitochapa muundo wa NodeDist nodi intdist intindex intchapa PriorityQueue NodeDistfunc pq PriorityQueue Len int return lenpq func pq PriorityQueue Chini i, j int bool return pqi.dist pqj.distfunc pq PriorityQueue Badilisha i, j int pqi, pqj pqj, pqipqi.index ipqj.index jfunc pq PriorityQueue Pushx interface n : lenpqbidhaa : x.NodeDistitem.index npq ongezapq, kipengeefunc pq PriorityQueue kiolesura cha Pop zamani : pqn : lenzamanibidhaa : zamanin-1oldn-1 nilkipengee. index -1pq zamani0 : n-1kurejesha bidhaafunc g Grafu ShortestPathsrc, dest int int, int const inf int1e9dist : makemapintintprev : makemapintintpq : Foleni ya Kipaumbelekwa nodi : masafa ya g.nodi distnodi infdistsrc 0heap.Pushpq, NodeDistnodi: src, dist: 0kwa pq.Len 0 u : lundo.Poppq.NodeDistikiwa u.nodi dest mapumzikokwa _, makali : safu g.nodiu.nodi v : makali.tonewDist : u.dist edge.weightikiwa newDist distv distv newDistprevv u.nodiheap.Pushpq, NodeDistnodi: v, dist: newDistnjia : intif distdest ! inf kwa : dest; kwa ! 0; saa prevsaa path appendintat, njia...njia ya kurudi, distdestfunc main g :Graph Mpyag.OngezaEdge1, 2, 3g.OngezaEdge1, 4, 7g.OngezaEdge2, 3, 5g.OngezaEdge2, 4, 6g.OngezaEdge3, 5, 9g.OngezaEdge4, 5, 8njia, dist : g.Njia fupi1, 5fmt.PrintlnNjia Fupi:, njiafmt.PrintlnUmbali:, distMpango huu unafafanua muundo wa Grafu yenye mbinu za kuongeza kingo na kukokotoa njia fupi zaidi kwa kutumia algoriti ya Dijkstra. Grafu inawakilishwa kama orodha ya mkabala, na foleni ya kipaumbele inatumiwa kupata nodi iliyo karibu zaidi wakati wa utekelezaji wa algoriti. Kazi kuu inaonyesha jinsi ya kuunda grafu, kuongeza kingo, na kutafuta njia fupi kati ya nodi mbili. 