// Tenemos un vector > > grafo donde los elementos del vector i son del estilo (distancia, vecino) int dijkstra(int s, int dest){ int n = grafo.size(); const int INF = 100000000; vector dist(n, INF); vector prev(n, -1); vector vis(n, false); priority_queue< pair , vector >, greater > > q; q.push(make_pair(0, s)); dist[s]=0; while(!q.empty()){ int nodoMasCercano=q.top().second; q.pop(); if(!vis[nodoMasCercano]){ vis[nodoMasCercano]=true; forn(i, grafo[nodoMasCercano].size()){ int vecino = grafo[nodoMasCercano][i].second; int longitud = grafo[nodoMasCercano][i].first; // si guardaramos (vecino, distancia) esto sería al revés first y second int val = dist[nodoMasCercano]+longitud; if(val