Я настроил себе личный календарь на calend.ru. Там есть уведомления на e-mail (настраивается). Также кроме собственных событий можно добавить и конкретные праздники (например, тот же День учителя). И да, сервис отечественного производства (хотя для меня это не проблема).
Добавлю классику от Марка Зальцмана «Компьютерные игры: как это делается». Расписан по этапам процесс создания игр: от подготовки игры до маркетинга и технической поддержки. Книга довольно старая, но идеи продолжают и останутся быть актуальными. Автор собрал бесценный опыт лучших разработчиков игр. Однозначно, must read.
Не слышал о таком алгоритме. И для описанной задачи он вряд ли существует. Дело в том, что перебор всех простых путей (в которых ни одна вершина не встречается дважды) между любыми двумя вершинами в графе общего вида является NP-полной задачей. Кроме метода грубой силы решения пока не найдено.