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

Обход графа в ширину - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как в памяти представляется двусторонняя очередь (deque)? http://www.cyberforum.ru/cpp-beginners/thread579161.html
Люди пожалуйста помогите разобраться, как в памяти представляется двусторонняя очередь (deque), типа нарисовать таблицу ну память и схематично показать, как эта двусторонняя очередь работает.
C++ Перестановка и вычисление суммы элементов матрицы Задание: Укр---- Прочитати з файлу F1 матрицю A(15,18) переставити рядки матриці таким чином, щоб сума елементів кожного рядка спадала від першого рядка до останнього. Русск--- Прочитать из файла F1 матрицу А(15,18) переставить ряды матрицы так, чтобы сума элементов каждого ряда совпадала от первого ряда до последнего Заполнить массив смог но вот произвести остальные вычисления я пока не... http://www.cyberforum.ru/cpp-beginners/thread579159.html
Циклические вычислительные процессы. Задача табулирования C++
программа выводит только последнее значение, а как сделать так чтобы на каждом n-ом шаге выводил ответ #include <stdafx.h> #include <stdio.h> #include <iostream> #include <math.h> using std::cout; using std::endl; using std::cin;
Алгоритм рандомизации поля C++
Вот я нашел алгоритм, но тупо вставлять в проект я его не хочу, если вам не составит труда помогите понять алгоритм рандомизации. Задача о рандомизации массива картинок, картинок по паре, они типо рядом не должны стоять. Поясните еще пожалуйста зачем таймер. TForm1::RandomizePole() { Hours=0; Seconds=0; Minutes=0; Timer1->Enabled=true; int ItemCol=HorCol*VerCol; //количество всех...
C++ Вставить значения в вектор http://www.cyberforum.ru/cpp-beginners/thread579143.html
Пытаюсь вставить значения в вектор, но при запуске программы получаю ошибку сегментирования, ошибка пропадает если после добавления прерывать цикл, но это решение не подходит, как я понимаю нужно постоянно изменять размер вектора чтобы не получать ошибки, как это можно реализовать? for(vector<Position>::iterator i = rabbit.begin(); i != rabbit.end(); ++i) { if(i->day % 6+1) {...
C++ Программы легкие,написать 1) Найти натуральное число от 1 до 10000 с максимальной суммой делителей. 2) Два натуральных числа называются дружественными, если каждое из них равно сумме всех делителей другого (само другое число в качестве делителя не рассматривается). Найти все пары натуральных дружественных чисел, меньших 50 000 ... подробнее

Показать сообщение отдельно
Destinys
Сообщений: n/a
18.05.2012, 23:10     Обход графа в ширину
Требуется найти путь к файлу, указанному в первой строке входного файла.
Структура каталогов задана следующим образом. Вершиной является диск С:\. Он содержит каталоги и файлы, перечисленные во второй строке входного файла.
Каждая следующая строка входного файла содержит описание содержимого одного каталога: вначале идет имя каталога, потом его сожержимое.
Имена файлов и каталогов не содержат пробелов.

Выходной файл должен сожержать полный путь искомого файла.

Пример.
Входной файл:
laba5.cpp
С:\ Work Game logo.jpg
Work Univer School Diss shedule.xls
Game Tetris Piton
Univer Door Yes
Door 1.cpp 2.cpp 3.exe laba5.cpp
Yes ldf.jpg lfd.xls

Выходной файл:
C:\Work\Univer\Door\laba5.cpp
___________________________________________________________
Не знаю даже, с чего начать. Написал вот что-то типа этого, но вообще не пойму, то я делаю, или не то :

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
struct Item 
{
    int num;
    int val;
    Item* next;
    Item* left;
    Item* right;
 
};
 
class Graph
{
    int V;
    Item* vlists[max_V];
 
public:
    Graph();
    Graph(int V);
    ~Graph();
 
      void dfs (Graph G, int S)
      {
          int prev[max_V];
          marked[S]=1;
 
          for (Item* w=vlists[S]; w; w=w->next)
            if (!marked[w->num])
            {
                prev[w->num]=S;
                dfs(G,w->num);
            }
      }
 
      bool Isreachable(int t)
    {
        return marked[t];
    }
      void add (Item *root, int x)
      {
          if (root==NULL) { 
              root=new Item;
              root->val=x;
              root->left=NULL;
              root->right=NULL;
              return;     }
          if (root->val==x) return;
          if (root->val > x)
              if (root -> left) add(root->left,x);
              else {
                  root->left=new Item;
                  root->left->val=x;
                  root->left->left=NULL;
                  root -> left -> right = NULL;
              } else {
                  root->right=new Item;
                  root->right->val=x;
                  root->right->right=NULL;
                  root ->right -> left = NULL;
              }
      }
 
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru