Module: algoritmo de floyd


Problem

1/10

Floyd: El comienzo (C++)

Theory Click to read/hide

Error

Problem

Dado un gráfico dirigido a cuyos bordes se les asignan pesos no negativos (longitudes). Encuentra la longitud del camino más corto desde el vértice s hasta el vértice t.
 
Entrada
La primera línea contiene tres números: el número de vértices en el gráfico N ≤50, el número de vértices s y t. Luego viene la matriz de adyacencia del gráfico, es decir, N filas, cada una de las cuales contiene N números. El j-ésimo número en la i-ésima fila de la matriz de adyacencia especifica la longitud del borde que va desde el i-ésimo vértice hasta el j-ésimo. Las longitudes pueden tomar cualquier valor de 0 a 1000000, el número -1 significa que no hay borde correspondiente. Se garantiza que haya ceros en la diagonal principal de la matriz.
 
Salida
Imprimir un solo número – longitud mínima del camino. Si la ruta no existe, imprima -1.

Ejemplos
# Entrada Salida
1
3 1 2
0 -1 3
7 0 1
2 215 0
218
Write the program below
#include <vector>
#include <iostream>
#include <climits>
using namespace std;

const int inf = INT_MAX;

int main()
{
	int n, s, t;
	cin >> n >> s >> t;
	vector<vector<int> > d(n + 1, vector<int>(n + 1,inf));
	for (int i = 0; i < n; ++i)
	{
		for (int j = 0; j < n; ++j)
		{
			int a;
			cin >> a;
			if (a != -1)
			{
				d[i + 1][j + 1] = a;
			}
		}
	}
	for (int k = 1; k <= n; ++k)
	{
		for (int i = 1; i <= n; ++i)
		{
			for (int j = 1; j <= n; ++j)
			{      
			}
		}
	}
	if (d[s][t] == inf)
	{
		cout << -1;
		return 0;
	}
	cout << d[s][t] << endl;

}      

     

Program check result

To check the solution of the problem, you need to register or log in!