eolymp
bolt
Try our new interface for solving problems
Problems

The shortest distance

published at 11/8/16, 7:25:17 pm

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

published at 6/20/17, 5:18:27 pm

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

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

published at 11/19/19, 9:12:02 pm

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

published at 2/15/24, 9:13:44 pm

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); }