Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dre
1 / 1 / 0
Регистрация: 01.12.2010
Сообщений: 19
#1

Вывод простых циклов, из каждой вершины графа - C++

21.12.2010, 01:12. Просмотров 674. Ответов 4
Метки нет (Все метки)

здравствуйте, помогите переделать код выводящий все простые цепи из каждой вершины графа, в код выводящий все простые циклы из каждой вершины
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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
 
const int n=5;
int mas_res[n];
bool mas_kontr[n];
 
void print(int i_res)
{
        for(int i=0; i<i_res-1; i++)
                cout<<mas_res[i]<<"-";
        cout<<mas_res[i_res-1]<<"\n";
}
 
void rec(int a, int i_res, int *ar3, int n, bool fl)
{
        if(fl)
                fl=false;
        else
                print(i_res);
        int i;
        for(i=0; i<n; i++)
        {
                if(ar3[a*n+i]==1 && !mas_kontr[i])
                {
                        mas_kontr[i]=true;
                        mas_res[i_res]=i;
                        rec(i, i_res+1, ar3, n, fl);
                        mas_kontr[i]=false;
                }
        }
}
 
int main()
{
        int*ar3; int i;
ar3 =new int [n*n];
ar3[0*n+0]=0; ar3[0*n+1]=1; ar3[0*n+2]=0; ar3[0*n+3]=0; ar3[0*n+4]=1;
ar3[1*n+0]=1; ar3[1*n+1]=0; ar3[1*n+2]=1; ar3[1*n+3]=1; ar3[1*n+4]=1;
ar3[2*n+0]=0; ar3[2*n+1]=1; ar3[2*n+2]=0; ar3[2*n+3]=1; ar3[2*n+4]=0;
ar3[3*n+0]=0; ar3[3*n+1]=1; ar3[3*n+2]=1; ar3[3*n+3]=0; ar3[3*n+4]=0;
ar3[4*n+0]=1; ar3[4*n+1]=1; ar3[4*n+2]=0; ar3[4*n+3]=0; ar3[4*n+4]=0;
for(i=0; i<n; i++)
{ cout<<"for "<<i<<" vertex:\n";
        mas_res[0]=i; mas_kontr[i]=true;
        rec(i, 1, ar3, n, true);
        mas_kontr[i]=false;
 
}
   getch();
   }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2010, 01:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод простых циклов, из каждой вершины графа (C++):

Найти степени входа и выхода каждой вершины графа. - C++
Задано множество упорядоченных пар вершин, соответствующих дугам ориентированного графа. Найти степени входа и выхода каждой вершины. ...

Найти все вершины графа, к которым от заданной вершины можно добраться по пути не длиннее А - C++
Найти все вершины графа, к которым от заданной вершины можно добраться по пути не длиннее А. Никаких наработок нет, к сожалению, вообще...

Найти все вершины неориентированного графа, к которым существует путь заданной длины от выделенной его вершины - C++
Здравствуйте! Помогите пожалуйста решить задачу. Найти все вершины неориентированного графа, к которым существует путь заданной...

Найти все вершины неориентированного графа, к которым существует путь заданной длины от выделенной его вершины - C++
Здравствуйте.Помогите пожалуйста решить задачу. Найти все вершины неориентированного графа, к которым существует путь заданной длины от...

Найти все вершины графа, к которым существует путь заданной длины от вершины, номер которой вводится с клавиатуры. - C++
Помоги написать программу по графам плиз Найти все вершины графа, к которым существует путь заданной длины (не обязательно кратчайший)...

Удаление вершины графа - C++
Добрый вечер. Нужна помощь в удалении вершины графа. Вот код: struct arc; struct node { int id; ...

4
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
21.12.2010, 09:00 #2
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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
const int n=5;
int mas_res[n];
bool mas_kontr[n];
 
void print(int i_res)
{
        for(int i=0; i<i_res; i++)
                cout<<mas_res[i]<<"-";
        cout<<mas_res[0]<<"\n";
}
 
void rec(int a, int i_res, int *ar3, int n, bool fl)
{
        if(fl)
                fl=false;
        else
        {
            if(ar3[a*n+mas_res[0]]==1 && i_res!=2)
                print(i_res);
        }
        int i;
        for(i=0; i<n; i++)
        {
                if(ar3[a*n+i]==1 && !mas_kontr[i])
                {
                        mas_kontr[i]=true;
                        mas_res[i_res]=i;
                        rec(i, i_res+1, ar3, n, fl);
                        mas_kontr[i]=false;
                }
        }
}
 
int main()
{
        int*ar3; int i;
ar3 =new int [n*n];
ar3[0*n+0]=0; ar3[0*n+1]=1; ar3[0*n+2]=0; ar3[0*n+3]=0; ar3[0*n+4]=1;
ar3[1*n+0]=1; ar3[1*n+1]=0; ar3[1*n+2]=1; ar3[1*n+3]=1; ar3[1*n+4]=1;
ar3[2*n+0]=0; ar3[2*n+1]=1; ar3[2*n+2]=0; ar3[2*n+3]=1; ar3[2*n+4]=0;
ar3[3*n+0]=0; ar3[3*n+1]=1; ar3[3*n+2]=1; ar3[3*n+3]=0; ar3[3*n+4]=0;
ar3[4*n+0]=1; ar3[4*n+1]=1; ar3[4*n+2]=0; ar3[4*n+3]=0; ar3[4*n+4]=0;
for(i=0; i<n; i++)
{ //cout<<"for "<<i<<" vertex:\n";
        mas_res[0]=i; mas_kontr[i]=true;
        rec(i, 1, ar3, n, true);
        mas_kontr[i]=false;
 
}
   getch();
   }
Но еще раз спрошу: Может не стоит выводить и 0-1-4-0 и 0-4-1-0 ?
1
dre
1 / 1 / 0
Регистрация: 01.12.2010
Сообщений: 19
21.12.2010, 10:34  [ТС] #3
а если не стоит, что надо изменить?
0
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
21.12.2010, 12:02 #4
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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
 
const int n=5;
int mas_res[n];
bool mas_kontr[n];
 
void print(int i_res)
{
        for(int i=0; i<i_res; i++)
                cout<<mas_res[i]<<"-";
        cout<<mas_res[0]<<"\n";
}
 
void rec(int a, int i_res, int *ar3, int n, bool fl)
{
        int i;
        if(fl)
                fl=false;
        else
                {
                        if(ar3[a*n+mas_res[0]]==1 && i_res!=2 && mas_res[1]<mas_res[i_res-1])
                        {
                            for(i=1; i<i_res; i++)
                                if(mas_res[i]<mas_res[0])
                                    return;
                            print(i_res);
                        }
                }
        for(i=0; i<n; i++)
        {
                if(ar3[a*n+i]==1 && !mas_kontr[i])
                {
                        mas_kontr[i]=true;
                        mas_res[i_res]=i;
                        rec(i, i_res+1, ar3, n, fl);
                        mas_kontr[i]=false;
                }
        }
}
 
int main()
{
        int*ar3; int i;
ar3 =new int [n*n];
ar3[0*n+0]=0; ar3[0*n+1]=1; ar3[0*n+2]=0; ar3[0*n+3]=0; ar3[0*n+4]=1;
ar3[1*n+0]=1; ar3[1*n+1]=0; ar3[1*n+2]=1; ar3[1*n+3]=1; ar3[1*n+4]=1;
ar3[2*n+0]=0; ar3[2*n+1]=1; ar3[2*n+2]=0; ar3[2*n+3]=1; ar3[2*n+4]=0;
ar3[3*n+0]=0; ar3[3*n+1]=1; ar3[3*n+2]=1; ar3[3*n+3]=0; ar3[3*n+4]=0;
ar3[4*n+0]=1; ar3[4*n+1]=1; ar3[4*n+2]=0; ar3[4*n+3]=0; ar3[4*n+4]=0;
for(i=0; i<n; i++)
{ //cout<<"for "<<i<<" vertex:\n";
        mas_res[0]=i; mas_kontr[i]=true;
        rec(i, 1, ar3, n, true);
        mas_kontr[i]=false;
 
}
   getch();
   }
1
mascoor
0 / 0 / 0
Регистрация: 03.06.2016
Сообщений: 1
03.06.2016, 12:43 #5
valeriikozlov, доброго времени суток, а можете объяснить свой код, что куда и зачем
0
03.06.2016, 12:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2016, 12:43
Привет! Вот еще темы с ответами:

Вершины графа выводить буквами - C++
Добрый день Помогите пожалуйста с задачей обхода графа в ширину Есть граф с 6 вершинами от 1 до 6 После обхода результат - met...

Построить алгоритм прохождения всех циклов графа - C++
Задан граф G=(V,R) из N связанных вершин. Построить алгоритм прохождения всех циклов графа. С++ Примечание: цикл – это замкнутое...

Проверка графа на возможность достижимости одной вершины из другой - C++
Дана система двусторонних дорог, соединяющих пары городов. Является ли заданное множество дорог таким, что закрытие одной из них ведёт к...

Нахождение кратчайшего пути от одной вершины графа до другой - C++
Парни помогите доделать , в общем дан граф , я представил его связи в виде матрицы смежностей #include &lt;iostream.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.