eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Кратчайшее расстояние

опубликовано 08.11.2016, 19:25:17

Это нормально что таблица смежности не симметрична относительно главной диагонали?

опубликовано 20.06.2017, 17:18:27

>>Это нормально что таблица смежности не симметрична относительно главной диагонали?

А ничего , что граф ориентированный ???

опубликовано 19.11.2019, 21:12:02

В условии прямо сказано, что "На главной диагонали матрицы стоят нули". В некоторых тестах это не так. Желательно было бы исправить тесты или условие.

опубликовано 15.02.2024, 21:13:44

include <iostream>

include <vector>

include <climits>

int mind(std::vector<int> &dist, std::vector<bool> &visited, int n) { int min = INT_MAX; int ind = -1; for(int i = 1; i <= n; i++) { if(!visited[i] && dist[i] < min) { min = dist[i]; ind = i; } } return ind; } void deik(std::vector<std::vector<int>> graph, int s, int n) { std::vector<int> dist(n + 1, INT_MAX); std::vector<bool> visited(n + 1, false);

dist[s] = 0;

for(int i = 1; i <= n; i++)
{
    int u = mind(dist, visited, n);
    if(u == -1)
    {
        break;
    }

    visited[u] = true;
    for(int j = 1; j <= n; j++)
    {
        if(!visited[j] && graph[u][j] != 0 && dist[u] + graph[u][j] < dist[j])
        {
            dist[j] = dist[u] + graph[u][j];            
        }
    }
}
for(int i = 1; i <= n; i++)
{
    std::cout << (dist[i] != INT_MAX ? dist[i] : -1) << " ";
}

} int main() { int n; int s; std::cin >> n >> s; std::vector<std::vector<int>> graph(n + 1, std::vector<int> (n + 1)); for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { std::cin >> graph[i][j]; } } deik(graph, s, n); }