Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 5
1
.NET 3.x

Реализация алгоритма Диница над графами в виде матриц смежности

25.11.2014, 23:13. Показов 2583. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Попытка перевода кода из C++ в C#. Большая просьба исправить ошибки. А главное - что и как здесь нужно вывести инфу,которую алгоритм здесь расчитывает
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication3
{
    class Program
    {
            const int MAXN = 6; //Число вершин
            const int INF = 100; // Константа-бесконечность
            static int n, s, t;
            static int[,] c = new int[MAXN, MAXN];
            static int[,] f = new int[MAXN,MAXN];
            static int[] d = new int[MAXN];
            static int[] prt = new int[MAXN];
            static int[] q = new int[MAXN];
    
    static void Main(string[] args)
    {
        bool bfs() {
            int qh=0, qt=0;
                qt=qt++;
                s=q[qt];
            int[] d = Enumerable.Repeat((int) d[0], -1).ToArray(); 
                d[s] = 0;
                while (qh < qt) {
                    int v = q[qh++];
                    for (int to=0; to<n; ++to)
                        if (d[to] == -1 && f[v,to] < c[v,to]) {
                            q[qt++] = to;                           
                            d[to] = d[v] + 1;
                        }
                }
                return d[t] != -1;
        
        }
        int [] ptr = new int[MAXN]; 
        int dfs (int v, int flow) {
            if (flow != flow)  return 0;
            if (v == t)  return flow;
            for (int to=ptr[v]; to<n; ++to) {
                if (d[to] != d[v] + 1)  continue;
                int pushed = dfs (to, Math.Min(flow, c[v,to] - f[v,to]));
                if (pushed == pushed) {
                    f[v,to] += pushed;
                    f[to,v] -= pushed;
                    return pushed;
                }
            }
            return 0;
        }
 
        int dinic() {
            int flow = 0;
            int pushed;
            for (;;) {
                if (!bfs())  break;
                int[] ptr = Enumerable.Repeat((int) ptr[0], 0).ToArray();
 
                while (int pushed = dfs (s, INF));
                    flow += pushed;
            }
            return flow;
        }
        Console.ReadLine();
    }
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2014, 23:13
Ответы с готовыми решениями:

Реализация основных операций над графами и методов их обхода
Разработать процедуры ввода графа в виде матрицы инцидентности, матрицы смежности и списка...

Реализация алгоритма для работы с графами: задавать координаты вершин мышью
Ребят помогите, как такое делать? разработать программу, которая: 1) позволяет, используя...

Графы, алгоритм Диница (реализовать граф списком смежности)
У меня есть готовая программа по алгоритму Диница, но граф в матричном представлении. Очень нужно...

Реализация алгоритма Краскала для графа, который задается матрицей смежности
Доброго времени! Начала изучать Python и очень срочно необходимо реализовать алгоритм Краскала для...

1
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
26.11.2014, 11:55 2
Цитата Сообщение от sotona Посмотреть сообщение
Большая просьба исправить ошибки
Тут не ошибки исправлять надо, а полностью стирать и все по новой писать. Ваабще не читабельный код.
0
26.11.2014, 11:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2014, 11:55
Помогаю со студенческими работами здесь

Реализация паралельного алгоритма умножения матриц
Каким образом можна реализовать паралельный алгоритм умножения матриц на С# на примере умножения...

Реализация алгоритма Евклида для полиномов над полем
Надо реализовать данный алгоритм. Добавлено через 1 час 3 минуты Алгоритм Евклида для полиномов...

Програмная реализация алгоритма сложения трех матриц
Люди добрые, помогите пожалуйста!!:cry: Мне для курсовой работы нужно написать прогу(( а я не...

Задан неориентированный невзвешенный граф в виде матрицы смежности. Вывести эту матрицу в виде списка ребер
Помогите пожалуйста.задал неориентированный невзвешенный граф в виде матрицы смежности. помогите...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru