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

Пожалуйста, расшифруйте код - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Параллельное программирование http://www.cyberforum.ru/cpp-beginners/thread1192627.html
Подскажите, пожалуйста, как в PUTTY начать редактировать файл?
C++ Запись данных в переменную из текстового файла Пишу сокет приложение в Windows Form, есть textBox1, в нём должен содержатся IP сервера к которому нужно подключится. Считываю данные с textBox1 следующим образом: String ^host; host = textBox1->Text; Дальше пытаюсь занести эти данные в переменную следующим образом: _s_addr.sin_addr.S_un.S_addr = inet_addr(host); Возникает ошибка: http://www.cyberforum.ru/cpp-beginners/thread1192626.html
C++ Преобразование идельно сбалансированного дерева в дерево поиска
Здравствуйте, уважаемые специалисты! Вынуждена просить у вас помощи, ибо самой справиться не получается. Имеется задание: 1. Формирование однонаправленного списка; 2. Печать однонаправленного списка; 3. Удаление всех элементов с четными номерами; 4. Удаление однонаправленного списка из памяти; 5. Формирование двунаправленного списка; 6. Печать двунаправленного списка; 7. Добавление в...
C++ Векторный калькулятор на классах
Привет всем. Преподаватель дал задание, написать векторный калькулятор на классах. На массивах в консоли я сделал для 4 операций, но как теперь переписать его на классы, используя перегрузку функций итд, не могу понять. Прошу помощи от сообщества. Буду признателен, если будет готовое решение хотя бы для одной операции или хотя бы подсказки, что загонять в классы
C++ будьте добры правильная программа надо( http://www.cyberforum.ru/cpp-beginners/thread1192583.html
4. Определить номера строк матрицы R, хотя бы один элемент которых равен с, и элементы этих строк умножить на d.
C++ C++ try catch throw в разных функциях try и catch находятся в одной функции а throw вызывается из другой. ну MVS выкидывает исключение вместо передачи управления. что делать? проект консольный, не CLI Добавлено через 1 минуту даже если они находятся в одной функции, передача управления не происходит подробнее

Показать сообщение отдельно
Paris1
Сообщений: n/a

Пожалуйста, расшифруйте код - C++

29.05.2014, 16:36. Просмотров 200. Ответов 1
Метки (Все метки)

Есть код программы. Программа вычисляет максимальный поток по алгоритму Форда-Фалкерсона . В программе есть цикл, педагог спрашивает, каким образом программа выходит из этого цикла. И почему addFlow всегда равняется единичке. Заранее спасибо.

#include <memory.h>

#include<conio.h>

#include <stdio.h>

#include <locale.h>

const int MAX_VERTICES = 40;

int NUM_VERTICES;

const int INFINITY = 10000;

int f[MAX_VERTICES][MAX_VERTICES];

int c[MAX_VERTICES][MAX_VERTICES];

int Flow[MAX_VERTICES];

int Link[MAX_VERTICES];

int Queue[MAX_VERTICES];

int QP, QC;

int FindPath(int source, int target)

{

QP = 0; QC = 1; Queue[0] = source;

Link[target] = -1;

int i;

int CurVertex;

memset(Flow, 0, sizeof(int)*NUM_VERTICES);

Flow[source] = INFINITY;

while (Link[target] == -1 && QP < QC)

{

CurVertex = Queue[QP];

for (i = 0; i<NUM_VERTICES; i++)

if ((c[CurVertex][i] - f[CurVertex][i])>0 && Flow[i] == 0)

{

Queue[QC] = i; QC++;

Link[i] = CurVertex;

if (c[CurVertex][i] - f[CurVertex][i] < Flow[CurVertex])

Flow[i] = c[CurVertex][i];

else

Flow[i] = Flow[CurVertex];

}

QP++;

}

if (Link[target] == -1) return 0;

CurVertex = target;

while (CurVertex != source)

{

f[Link[CurVertex]][CurVertex] += Flow[target];

CurVertex = Link[CurVertex];

}

return Flow[target];

}

int MaxFlow(int source, int target)

{

memset(f, 0, sizeof(int)*MAX_VERTICES*MAX_VERTICES);

int MaxFlow = 0;

int AddFlow;

do

{

AddFlow = FindPath(source, target);

MaxFlow += AddFlow;

} while (AddFlow >0);

return MaxFlow;

}

int main()

{

setlocale(LC_ALL, "Ukrainian");

int source, target;

printf("Ввести число вершин \n");

scanf_s("%d", &NUM_VERTICES);

printf("Ввести номера потока и стока \n");

scanf_s("%d %d", &source, &target);

int i, j;

printf("Матрица смежности \n");

for (i = 0; i<NUM_VERTICES; i++)

for (j = 0; j<NUM_VERTICES; j++)

scanf_s("%d", &c[i][j]);

printf("Max потiк ");

printf("%d\n", MaxFlow(source, target));

_getch();

return 0;

}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru