Module: Floyd'un algoritması


Problem

1/10

Floyd: Başlangıç ​​(C++)

Theory Click to read/hide

Error

Problem

Kenarlarına bazı negatif olmayan ağırlıklar (uzunluklar) atanan yönlendirilmiş bir grafik verildi. s köşe noktasından t köşe noktasına giden en kısa yolun uzunluğunu bulun.
 
Giriş
İlk satır üç sayı içerir: grafikteki köşe sayısı N ≤50, köşe sayısı s ve t. Daha sonra grafiğin bitişiklik matrisi gelir, yani her biri N sayı içeren N satır. Bitişiklik matrisinin i'nci satırındaki j'inci sayı, i'inci tepe noktasından j'inci köşeye giden kenarın uzunluğunu belirtir. Uzunluklar 0 ile 1000000 arasında herhangi bir değer alabilir, -1 sayısı karşılık gelen kenar olmadığı anlamına gelir. Matrisin ana köşegeninde sıfır olması garanti edilir.
 
Çıktı
Tek bir sayı yazdır – minimum yol uzunluğu Yol yoksa -1 yazdırın.

Örnekler
# Girdi Çıktı
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!