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

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

Восстановить пароль Регистрация
 
Paris1
Сообщений: n/a
29.05.2014, 16:36     Пожалуйста, расшифруйте код #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;

}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2014, 16:36     Пожалуйста, расшифруйте код
Посмотрите здесь:

Поправьте пожалуйста код C++
обьясните пожалуйста код C++
расшифруйте код printf () :%12.2f C++
Написать код для игры НИМ. проверьте пожалуйста тот ли это код C++
C++ Расшифруйте пожалуйста предикат
Расшифруйте ошибку, пожалуста C++
Расшифруйте 3 строчки кода C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
29.05.2014, 16:38     Пожалуйста, расшифруйте код #2
оформите нормально и тэг поставьте, глаза ломаются об это.
Yandex
Объявления
29.05.2014, 16:38     Пожалуйста, расшифруйте код
Ответ Создать тему
Опции темы

Текущее время: 14:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru