Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить программу построения графика линейной функции http://www.cyberforum.ru/cpp-beginners/thread853028.html
Построить график линейной функции y = kx для k = 0.1,0.2,0.3,…,1.
C++ Составить алгоритм и программу рисование простейших фигуры Написать программу, которая вычерчивает на экране домик. http://www.cyberforum.ru/cpp-beginners/thread853027.html
C++ Не читает первую строку из файла
Собсвтенно идет чтение из файла в объект структуры, который потом пихается в стек. Чтобы его вывести таблицей, он сначала пихается в массив, там выводится, а потом из массива возвращается в стек. Но почему-то первая строка из файла не читается =( т.е. если в файле будет: 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 То в стеке останется только 2 2 2 2 2 2 3 3 3 3 3 3 Но если в файле написать так: ...
Составить алгоритм и программу для решения задач с использованием функций C++
Даны действительные числа s, t. Вычислить f(t, -2s, 1.17)+f(2.2, t, s-t), где f(a, b, c) = 2a-b-sinc/5+|c|
C++ Разработать алгоритм и программу для решения задачи http://www.cyberforum.ru/cpp-beginners/thread853021.html
Дан файл f, компоненты которого являются действительными числами. Найти: а) сумму компонент файла f; б) последнюю компоненту файла.
C++ Вычисление среднего арифметического: не видно результатов работы программы Не пойму в чем причина,запускаю программу,ввожу числа,а среднее арифметическое не считает,а просто проскакивает экран дальнейшей загрузки программы,саму программу прилагаю,помогите пожалуйста,в чем причина этого "проскока". #include<iostream> using namespace std; int main() {unsigned int a,b,c;//вводим переменные float x; cout<<"\tVvedite pervoe chislo ";//ввод cin>>a; ... подробнее

Показать сообщение отдельно
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
30.04.2013, 19:08     Алгоритм Флойда-Уоршелла
У меня есть задание....дан граф, представленный матрицей смежности. Для каждой пары вершин определить, существует ли кратчайший путь между ними или нет. Если существует, то в матрицу смежности вывести 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 минут
Или может у кого есть реализация этого алгоритма для графов с отрицательными весами?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru