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

Для графа определить его двудольность и вывести обе доли (исправить программу) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ люди добрые http://www.cyberforum.ru/cpp-beginners/thread1192469.html
4. Определить номера строк матрицы R, хотя бы один элемент которых равен с, и элементы этих строк умножить на d.
C++ перегрузка умножения MyComplex operator* (MyComplex x, MyComplex y) { double Re1, Im1, Re2, Im2; x.ReAndIm(Re1, Im1); y.ReAndIm(Re2, Im2); Re1=Re1*Re2-Im1*Im2; Im1=Re1*Im2+Re2*Im1; x.modANDarg(Re1,Im1); return x; }вот функция перегрузки, если умножить константу на комплексное число, то все работает, где и как происходит преобразование константы в комплексное число http://www.cyberforum.ru/cpp-beginners/thread1192452.html
C++ ПОТОКОВЫЕ КЛАССЫ С++
Всем здравствуйте! Опять время сессии , и опять обнаглевший студент просит помощи, в надежде что кто-либо откликнится) нужно на завтро сделать лабу, вот задание Напишите программу, которая читает файл и печатает в алфавитном порядке каждую группу слов, которые совпадают по первым семи символам, но отличаются где-то дальше вобщем я тут набросал основной алгоритм, скорей все с косяками, ну...
C++ Ввести строку символов. Подсчитать количество символов
Ввести строку символов. Подсчитать количество символов больше сивола <<К>>, меньше символа <<К>> и количсевто символов равных <<К>>. Вывести результат на экран монитора. Вывести на экран символы номера позиций, которых равны значениям (для латинского алфавита)
C++ Разработать функцию, которая возвращает «хвост» строки S1, в которой осуществляется поиск подстроки S2 и возвр http://www.cyberforum.ru/cpp-beginners/thread1192399.html
Разработать функцию, которая возвращает «хвост» строки S1, в которой осуществляется поиск подстроки S2 и возвращаются все символы исходной строки, после указанного вхождения
C++ Заполнение массива Извините, что флудю, просто в старой теме уже не отвечают. data::data(int f){ if (f==1) app={'С','и','с','т','е','м','н','о','е'}; } Как блин правильно заполнить такой массив??????????????? подробнее

Показать сообщение отдельно
grikukan
61 / 61 / 21
Регистрация: 23.09.2012
Сообщений: 212
29.05.2014, 16:09     Для графа определить его двудольность и вывести обе доли (исправить программу)
Что-то Вы не то сделали...
Это пишется примерно так
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
69
70
71
72
73
74
75
76
#include<iostream>
#include<vector>
#include<memory.h>
using namespace std;
long n,m;
vector<long> graph[100007];//сам граф
long visited[100007];
bool possible=true; // граф двудолен
void dfs(long v,int c) // v - вершина, c-цвет
{
    visited[v]=c; // красим вершину
    for(int j=0;j<graph[v].size();j++)
    {
        if(visited[graph[v][j]]==0) //если вершина не покрашена
        {
            long new_colour;
            if(c==1) // Меняем цвет
            {
                new_colour=2;
            }
            else
            {
                new_colour=1;
            }
            dfs(graph[v][j],new_colour); // Идем в другую вершину
        }
        if(visited[graph[v][j]]==c) // ребро соединяет вершины одинакового цвета,граф не двудолен
        {
            possible=false; // Не двудолен - значит не двудолен
        }
    }
}
 
int main()
{
    cin>>n>>m; // n- количество вершин, m- количестов ребер
    memset(visited,sizeof(visited),0);
    for(int i=1;i<=m;i++)
    {
        long p,q;
        cin>>p>>q; // читаем ребро
        graph[p].push_back(q);
        graph[q].push_back(p);
    }
    for(int i=1;i<=n;i++)
    {
        if(visited[i]==0) // Если мы еще не посетили вершину
        {
            dfs(i,1); // Идем ее красить
        }
    }
    if(!possible) // Граф не двудолен, печалька
    {
        cout<<"Graph isn't biparate :("<<endl;
        return 0;
    }
    cout<<"Graph is biparate :)"<<endl;
    cout<<"The first part of graph: "<<endl;
    for(int i=1;i<=n;i++)
    {
        if(visited[i]==1) // Вериша покрашена в первый цвет
        {
            cout<<i<<' ';
        }
    }
    cout<<endl;
    cout<<"The second part of graph: "<<endl;
    for(int i=1;i<=n;i++)
    {
        if(visited[i]==2) // Вериша покрашена во второй цвет
        {
            cout<<i<<' ';
        }
    }
 
}
 
Текущее время: 09:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru