Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
SY
0 / 0 / 0
Регистрация: 03.11.2010
Сообщений: 42
1

Реализовать поиск в ширину в простом графе

12.09.2011, 23:06. Показов 771. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Поиск в ширину--2 (вершины идентифицируются названиями)

ограничение по времени на тест: 2 seconds
ограничение по памяти на тест: 64 megabytes

Напишите программу, которая будет реализовывать поиск в ширину в простом графе, вершины которого не нумерованы и идентифицируются словесными названиями.


Входные данные


В первой строке входных данных задано число NUM — количество различных поисков в ширину, которые нужно выполнить (на разных графах). Далее следуют NUM блоков, каждый из которых имеет следующую структуру.

Первая строка блока содержит целое число M — количество ребер графа. Далее следуют M строк, каждая из которых содержит по два названия — концы соответствующего ребра. Названия гарантированно не содержат пробелов и отделены друг от друга одним пробелом. Далее, в последней строке блока, записано единственное название — вершина, начиная с которой нужно запустить поиск (это название гарантированно хоть раз упоминалась как конец одного из ребер).

Количество различных графов в одном тесте NUM не превышает 5, количество рёбер в графе не превышает 50000.

Выходные данные


Выведите на стандартный выход (экран) NUM блоков, в каждом из которых записаны расстояния от указанной начальной вершины до всех достижимых (если есть недостижимые вершины, они вообще не упоминаются). Перечень должен быть отсортирован по названиям вершин, каждая пара (название, расстояние) должна выводиться в отдельной строке, блоки должны быть отделены друг от друга строкой «===» (три знака «равно»).


Примеры тестов


Входные данные
2
2
Cherk Zol
Cherk Sm
Zol
4
A Bb
Bb Ccc
Ccc A
Dddd Eeeee
Bb
Выходные данные
Cherk 1
Sm 2
Zol 0
===
A 1
Bb 0
Ccc 1

Примечание


Задачу можно решить, пользуясь map<string,int> и vector<string> для преобразований имен в номера и номеров в имена; тогда внутри программы можно использовать представление графа как vector<list<int> >. Для вывода в отсортированном порядке использовать прохождение по всем элементам от begin() до end() структуры map<string,int> (превращающей названия в номера).

Другой способ — вообще отказаться от нумерации вершин числами и представлять граф как map<string,list<string> >; в этом случае массивы, используемые самим поиском, следует заменить на map<string,int>.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2011, 23:06
Ответы с готовыми решениями:

Поиск в ширину в графе
У меня есть небольшая база данных(обычный текстовый файл). Парсирую этот файл и полчается список...

Поиск в ширину на графе
#include &quot;stdafx.h&quot; #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; ...

Поиск в ширину в графе
Может быть вопрос слегка глупый. Но можно ли приравнять алгоритм &quot;Поиск в ширину&quot; к обычному...

Поиск в ширину в графе
Здравствуйте. Помогмте, пожалуйста! Суть в чем: В неориентированном графе требуется найти...

1
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
13.09.2011, 14:36 2
Олимпиадная задача однако
0
13.09.2011, 14:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.09.2011, 14:36
Помогаю со студенческими работами здесь

Поиск в ширину по матрице в графе
Доброго времени суток, пожалуйста помогите в написании поиска в ширину по матрице в графе.

Поиск в ширину, глубину в графе
Есть ли у кого программка для поиска в ширину/в глубину на графах с использованием матрицы...

Поиск в графе в ширину заданном списками инциденций
Добрый день. Пытаюсь написать функцию поиска в ширину в графе, заданным списками инциденций....

Поиск в ширину с помощью списка инцидентности в ориентированном графе
Здравствуйте, коллеги! Помогите пожалуйста с реализацией поиска в ширину с помощью списка...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru