Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составить программу построения графика линейной функции https://www.cyberforum.ru/ cpp-beginners/ thread853028.html
Построить график линейной функции y = kx для k = 0.1,0.2,0.3,…,1.
Составить алгоритм и программу рисование простейших фигуры C++
Написать программу, которая вычерчивает на экране домик.
C++ Не читает первую строку из файла
Собсвтенно идет чтение из файла в объект структуры, который потом пихается в стек. Чтобы его вывести таблицей, он сначала пихается в массив, там выводится, а потом из массива возвращается в стек. Но...
C++ Составить алгоритм и программу для решения задач с использованием функций Даны действительные числа s, t. Вычислить f(t, -2s, 1.17)+f(2.2, t, s-t), где f(a, b, c) = 2a-b-sinc/5+|c| https://www.cyberforum.ru/ cpp-beginners/ thread853025.html
C++ Разработать алгоритм и программу для решения задачи https://www.cyberforum.ru/ cpp-beginners/ thread853021.html
Дан файл f, компоненты которого являются действительными числами. Найти: а) сумму компонент файла f; б) последнюю компоненту файла.
C++ Вычисление среднего арифметического: не видно результатов работы программы
Не пойму в чем причина,запускаю программу,ввожу числа,а среднее арифметическое не считает,а просто проскакивает экран дальнейшей загрузки программы,саму программу прилагаю,помогите пожалуйста,в чем...
C++ метод дихотомии
Помогите!
C++ Сохранение/чтение map<string,string*> в файл Доброго времени суток, Нужно сделать БД для индексации содержимого текстовых файлов, сначала решил, что все просто: читаем файл и записываем данные в виде map<"some_word","file_name_string">,... https://www.cyberforum.ru/ cpp-beginners/ thread853002.html
C++ Дан список, переместить локальные максимумы https://www.cyberforum.ru/ cpp-beginners/ thread853000.html
Дан список из n целых чисел {a}_{1},{a}_{2},..{a}_{n}. Переместить в начало списка все элементы, которые являются локальными максимумами, то есть больше своих соседей.
C++ Работа со строками (sting.h) (печатать первые буквы слов в порядке убывания частоты их употребления) Составить программу, которая позволяет ввести текст, а потом печатает первые буквы слов в порядке убывания частоты их употребления. Слово считать последовательностью символов заключенных между... https://www.cyberforum.ru/ cpp-beginners/ thread852995.html
0 / 0 / 1
Регистрация: 04.10.2012
Сообщений: 88
0

Алгоритм Флойда-Уоршелла

30.04.2013, 19:08. Просмотров 699. Ответов 0
Метки (Все метки)

У меня есть задание....дан граф, представленный матрицей смежности. Для каждой пары вершин определить, существует ли кратчайший путь между ними или нет. Если существует, то в матрицу смежности вывести 1, если нет, то 0, если путь бесконечно мал вывести -1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
const int inf=1E9;
using namespace std;
int main()
{  
 int n,i,j,k,d[100][100];
 scanf("%d",&n);           //считывание из файла
 for (i=0;i<n;++i)
  for (j=0;j<n;++j)
  {
   scanf("%d",&d[i][j]);
  }
 
 
 for (k=0;k<n;++k)            //Алгоритм Флойда-Уоршелла 
  for (i=0;i<n;++i)
   for (j=0;j<n;++j)
    if (d[i][k]<inf && d[k][j]<inf) d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
 
 for (i=0;i<n;++i)
   for (j=0;j<n;++j)
if (d[i][j] > 0) d[i][j]=1;
 
for (i=0;i<n;++i)
   for (j=0;j<n;++j)
if (d[i][j] < 0) d[i][j]=-1;
  
  for (i=0;i<n;++i,printf("\n"))    // вывод на консоль результата
  for (j=0;j<n;++j)
 printf("%d ", d[i][j]);
}
входной файл:
Код
0 2 2
2 0 3
2 3 0
выход:
Код
-1 -1 -1
-1 -1 -1
-1 -1 -1
Но это неверно!
Должно быть:
Код
1 1 1 
1 1 1 
1 1 1
Что я делаю неверно?

Добавлено через 7 минут
Или может у кого есть реализация этого алгоритма для графов с отрицательными весами?

Вернуться к обсуждению:
Алгоритм Флойда-Уоршелла
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2013, 19:08
Готовые ответы и решения:

Алгоритм Флойда - Уоршелла
не получается реализовать алгоритм Флойда-Уоршелла, вроде все должнен выводить, а выводит или нули...

Алгоритм Флойда–Уоршелла
for (int k=0; k&lt;n; k++) for (int i=0; i&lt;n; i++) for (int j=0; j&lt;n; j++)как сделать так,...

Алгоритм Флойда-Уоршелла. Графы
Вообщем, требуется найти кратчайший путь между тремя вершинами в дереве со взвешенными ребрами....

Реализовать алгоритм Флойда Уоршелла
Нужна помощь по написанию алгоритма по задаче представленной ниже: Туристическая фирма...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.