Saltar al contenido

dijkstra en c ++ ejemplo de código de ruta más corta

Investigamos por diferentes foros para así traerte la solución a tu dilema, si tienes preguntas puedes dejar la pregunta y contestaremos con mucho gusto.

Ejemplo 1: dijkstra en c ++

voiddijkstra(int s)
  priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;for(int i=0; i<N; i++) dist[i]= INF;
  dist[s]=0;
  pq.push(make_pair(0, s));while(!pq.empty())
    pair<int,int> front = pq.top();
    pq.pop();int w = front.first, u = front.second;if(w > dist[u])continue;for(int i=0; i<adj[u].size(); i++)
      pair<int,int> v = adj[u][i];if(dist[v.first]> dist[u]+ v.second)
        dist[v.first]= dist[u]+ v.second;
        pq.push(make_pair(dist[v.first], v.first));

Ejemplo 2: algoritmo dijkstra c ++

#include<bits/stdc++.h>
using namespace std;intmain()int n =9;int mat[9][9]=100,4,100,100,100,100,100,8,100,4,100,8,100,100,100,100,11,100,100,8,100,7,100,4,100,100,2,100,100,7,100,9,14,100,100,100,100,100,100,9,100,100,100,100,100,100,100,4,14,10,100,2,100,100,100,100,100,100,100,2,100,1,6,8,11,100,100,100,100,1,100,7,100,100,2,100,100,100,6,7,100;int src =0;int count =1;int path[n];for(int i=0;i<n;i++)
		path[i]= mat[src][i];int visited[n]=0;
	visited[src]=1;while(count<n)int minNode;int minVal =100;for(int i=0;i<n;i++)if(visited[i]==0&& path[i]<minVal)
				minVal = path[i];
				minNode = i;
		
		visited[minNode]=1;for(int i=0;i<n;i++)if(visited[i]==0)
				path[i]=min(path[i],minVal+mat[minNode][i]);
					
		count++;
	
	path[src]=0;for(int i=0;i<n;i++)
		cout<<src<<" -> "<<path[i]<<endl;return(0);

Nos puedes asistir nuestra ocupación ejecutando un comentario o valorándolo te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *