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

Задача на графы - C++

Восстановить пароль Регистрация
 
Gwynbleidd
0 / 0 / 0
Регистрация: 12.04.2012
Сообщений: 11
02.05.2012, 23:14     Задача на графы #1
Помогите, пожалуйста, дана задача

Произвести обход графа, начиная от данной вершины, в ширину, т.е. вывести номера вершин в порядке удаленности от начальной вершины. Расстоянием от одной вершины графа до другой считается количество ребер в кратчайшем пути между этими вершинами.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2012, 23:14     Задача на графы
Посмотрите здесь:

графы C++
Графы C++
C++ Задача на графы. Удалить ребра так, чтобы степень любой вершины была равна 3 или 0
Непростая задача на графы. C++
C++ задача про графы
C++ Задача на графы. Удалить ребро, соединяющее вершины a и b
C++ Задача про графы
Интересная задача на графы C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,409
03.05.2012, 09:25     Задача на графы #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
#include <fstream>
#include <queue>
#define N 10
using namespace std;
 
int main()
{
    ofstream o("result.txt");
    ifstream in("A.txt");
    if (!in) return 1;
    // ------------------------------ГЁГ*èöèГ*ëèçГ*öèÿ------------------------------
    queue <int> q; // î÷åðåäü äëÿ õðГ*Г*ГҐГ*ГЁГї Г*îìåðîâ âåðøèГ*
    bool visited[N]; //false - âåðøèГ*Г* Г*ГҐ Г°Г*ññìîòðåГ*Г*, true - Г°Г*ññìîòðåГ*Г*
    bool inqueue[N]; //false - âåðøèГ*Г* Г*ГҐ Гў î÷åðåäè, true - Гў î÷åðåäè
    bool A[N][N]; // Г¬Г*òðèöГ* ñìåæГ*îñòè
    int start = 0; // Г*îìåð Г±ГІГ*ðòîâîé âåðøèГ*Г»
    int cur; // Г*îìåð ïîñåùГ*åìîé âåðøèГ*Г»
    for (int i = 0; i < N; i++)
    {
        visited[i] = inqueue[i] = false;        
        for (int j = 0; j < N; j++)
            in>> A[i][j];
    }
    q.push (start); // Г§Г*ïèñûâГ*ГҐГ¬ Г*Г*Г·Г*ëüГ*ГіГѕ âåðøèГ*Гі Гў î÷åðåäü
    visited[start] = inqueue[start] = true;
    // --------------------------------îáùèé ГёГ*ГЈ--------------------------------
    while (!q.empty())
    {
          cur = q.front();
          o<< cur<< " ";
          visited[cur] = true;
          q.pop();
          for (int i = 0; i < N; i++)
          {
              if (!inqueue[i] && A[cur][i])
              {
                  q.push (i);
                  inqueue[i] = true;
              }
          }
    }
    in.close();  o.close();
    return 0;
}
Gwynbleidd
0 / 0 / 0
Регистрация: 12.04.2012
Сообщений: 11
03.05.2012, 21:21  [ТС]     Задача на графы #3
Огромное спасибо
Yandex
Объявления
03.05.2012, 21:21     Задача на графы
Ответ Создать тему
Опции темы

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