IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Истоки и стоки, Олимпиадная задача
сообщение
Сообщение #1


Учиться, учиться еще раз учиться
***

Группа: Пользователи
Сообщений: 158
Пол: Мужской
Реальное имя: Яшар

Репутация: -  3  +


Пусть нам задана карта односторонних дорог между городами.Город из которого можно добраться до всех других городов, называеться исток.Город в который можно добраться из всех других городов, называеться сток.Требуеться найти все стоки и истоки.

Заданные

N:число городов;
K:число дорог;
i и j:тоесть эта дорога соединяет i-й город с j-м.

Пример

Input.txt
6
10
2-1
2-4
4-1
4-2
4-3
1-3
3-5
5-3
3-6
6-3

Output.txt

stoki 3 5 6
istoki 2 4



--------------------
Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Олимпиадным задачам-олимпиадные методы!
Зададим сеть городов графом с ориентированными ребрами
Для каждой вершины выполним такие действия:
Занесем её в стек, пометим рассмотренной, рассмотрим все исходящие из нее ребра в неисследованные вершины, запишем их в конец стека, перейдем к следующей вершине в стеке и так пока не дойдем до конца
Если количество вершин в стеке равно общему-это вершина исток
Паралельно после рассмотрения каждой вершины будем формировать матрицу достижимостей вершин
Далее рассматриваем все вершины, проверяем их на достижимость из всех других и выводим вершины-стоки
Метод называется "Поиск в ширину на графе", в гугле пару миллионов ссылок найдешь)
Если надо-могу написать простейший код
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата
Если надо-могу написать простейший код
Не надо... Во-первых, простейший код есть на форуме, а во вторых - олимпиадные задачи - очень скользкая тема, можно помочь, а не решить за кого-то...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Michael_Rybak
*****

Группа: Пользователи
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


Задачу можно решить за O(n log n + k). Сначала выделяем сильно связные компоненты. Сворачиваем каждую компоненту в точку. Получаем ациклический граф. В ациклическом графе исток может быть только один (очевидно). Проходим по всем вершинам, ищем любую вершину А, в которую не входит ни одно ребро. Если исток вообще есть, то А и будет исток. Проверяем, исток ли это, запустив поиск в ширину. Если А не исток, то истоков в исходном графе нет. Если А исток, то в исходном графе истоками будут все вершины, входящие в сильно связную компоненту, которая свернулась в А.

Теперь меняем направления ребер и делаем то же самое - в результате находим стоки.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Учиться, учиться еще раз учиться
***

Группа: Пользователи
Сообщений: 158
Пол: Мужской
Реальное имя: Яшар

Репутация: -  3  +


есть ли простейший код этой программы?


--------------------
Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Michael_Rybak
*****

Группа: Пользователи
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


Код описанного мной решения займет строчек эдак 200-400, и простейшим не будет.

А решение, предложенное Андрюхой, попробуй закодить сам, и приходи, когда будет что-то конкретное не получаться.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 6:13
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name