Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2013, 02:21   #1
airesjke
Пользователь
 
Регистрация: 29.10.2011
Сообщений: 24
Хорошо Задача(Описание внутри)

Изолированные города

В государстве N городов с номерами 1.2….N. Некоторые города связаны между собой дорогами и образуют штат. Сколько штатов в государстве.

Формат входного файла

Во входном файле записаны сначала два числа N и M, задающие соответственно количество городов и количество дорог (1≤N≤100, 0≤M≤1000), а затем перечисляются попарно связанные дорогами города. Каждая дорога задается номерами городов, которые она соединяет.
Формат выходного файла

В выходной файл выведите одно число – количество штатов в государстве.

Примеры:

input.txt 6 3 1 3 1 5 2 6 output.txt 3
input.txt 7 0 output.txt 7
airesjke вне форума Ответить с цитированием
Старый 02.05.2013, 04:16   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

http://programmersforum.ru/showthread.php?t=234680
http://programmersforum.ru/showthread.php?t=234721

Не многовато ли тем с одной и той же задачей?
У Вас за это время какие-нибудь мысли по ее реализации возникли?

Алгоритм, пришедший в голову (скорее всего, не оптимальный):
Считать N и M
Завести массив N на N
Считать M дорог и установить в массиве единички на пересечении тех строки и столбца, чьи номера совпадают со считанными номерами городов
Завести массив длины N
Завести переменную - количество штатов, равную 0
Цикл по всем элементам массива длины N (поиск не посещенных городов)
Записать в первый найденный нулевой элемент массива единицу, увеличить счетчик штатов и запустить обход в глубину для этого города (последовательное посещение всех городов, с которыми есть дорога)
Как только собираемся посетить город, смотрим на его состояние по массиву длины N
Если там 0, значит он не посещен - ставим 1 и вызываем посещение доступных ему городов, иначе выходим из рекурсии
Выводим количество штатов
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 02.05.2013, 12:55   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Мне что-то кажется, лучше действовать таким образом:
0. Предпринять действия, позволяющие в дальнейшем оптимальнее искать города, соединенные дорогами с данным:
0.1. Определяем структура из двух чисел, описывающая дорогу.
0.2. Заводим массив этих структур длиной 2М.
0.3. Каждую считанную дорогу записываем в этот массив дважды: в прямом и обратном направлении.
0.4. Сортируем массив по первому полю для обеспечения бинарного поиска.
Таким образом сокращаем как объем необходимой памяти, так и сложность алгоритма.
s-andriano вне форума Ответить с цитированием
Старый 02.05.2013, 15:13   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

s-andriano, согласен. Еще можно попробовать взять map<int, vector<int> > (т.к., похоже, решение нужно именно на c++).
P.S. Вся программа - 50 строчек.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 02.05.2013 в 16:04.
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изолированные города(Описание внутри) airesjke C++ Builder 0 01.05.2013 07:09
Проблема с компьютером (описание внутри) seragem Помощь студентам 4 07.06.2011 08:57
Описание внутри HoBuHKuй Помощь студентам 1 02.06.2010 14:16
Глюк(описание внутри) Stellvertreter Общие вопросы C/C++ 6 16.10.2008 19:31
Программа. Паскаль. Описание внутри. Nexx Помощь студентам 5 07.12.2007 20:07