Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2015, 18:14   #1
Krivorukov
Пользователь
 
Регистрация: 25.10.2012
Сообщений: 10
По умолчанию Проверка графа на двудольность

Я использовал алгоритм поиска в глубину, чтобы проверить - является ли граф двудольным. Но не работает. Подскажите пожалуйста что не так.
Код:
#include <iostream>
#include <vector>
 
using namespace std;
 
void DFS(int vertex);
void print();
 
const int count_vertex = 4;
bool bipartite_graph = true;
vector<vector<int>> graph =
{ 
    {0,0,0,0},
    {0,1,1,0},
    {1,0,0,1},
    {1,0,0,1},
    {0,1,1,0}
};
vector<int> color(count_vertex + 1, 0);
 
int main()
{
    setlocale(LC_ALL, "RUS");
 
    
    print();
    
    for (size_t i = 1; i <= count_vertex; i++)
    {
        if (color[i] == 0)
        {
            color[i] = 1;
            DFS(i);
        }
 
    }
    cout << bipartite_graph << endl;
 
    system("PAUSE");
    return 0;
}
 
void print()
{
    cout << "Матрица смежности" << endl;
    for (auto i = graph.begin(); i != graph.end(); ++i)
    {
        for (auto j = (*i).begin(); j != (*i).end(); ++j)
            cout << *j << " ";
        cout << endl;
    }
 
}
 
void DFS(int vertex)
{
    for (int u = 0; u < graph[vertex].size(); ++u)
    {
        if ((color[u] == 0) && (graph[vertex][u] == 1))
        {
            color[u] = 3 - color[vertex];
            DFS(u);
        }
        else if (color[u] == color[vertex])
            bipartite_graph = false;
    }
}

Последний раз редактировалось Krivorukov; 20.01.2015 в 10:12.
Krivorukov вне форума Ответить с цитированием
Старый 19.01.2015, 21:24   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

#include <iostream.h>
#include <vector.h>...

void main()
{

}


или так как у вас в коде тоже работает и ошибок не выдаёт?
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 20.01.2015, 07:53   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
#include <iostream.h>
#include <vector.h>...
Только в древних компиляторах

Код:
void main()
Нельзя так по стандарту
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка на связность графа. C. Yakoff Помощь студентам 0 25.06.2013 19:12
Проверка графа на ацикличность Lodyr Общие вопросы C/C++ 0 08.10.2012 20:39
создание графа по матрице и поиск кратчайшего пути из одного графа в другой lexflax Общие вопросы C/C++ 1 06.09.2012 07:32
проверка системы циклов графа на линейную независимость Сергеевна Помощь студентам 0 13.04.2011 22:48
Проверка системы циклов графа на линейную независимость Сергеевна Общие вопросы по Java, Java SE, Kotlin 0 13.04.2011 00:11