Критический путь
На аукционе
Составьте программу, вычисляющую критический путь в сетевом графике. Языком реализации программы выбран язык Java, точкой входа в программу должен являться метод main класса Cpm. Формат входных данных Программа должна считывать описание сетевого графика из стандартного потока ввода. Описание состоит из предложений, разделённых точкой с запятой. Каждое предложение записывается как последовательность зависимых работ: работа < работа < ... < работа Знак « BoilAll [color = red] BuyFood -> CutCabbage BuyFood -> CutMeat [color = red] BuyFood -> CutOnion BuyFood -> PeelPotatoes CutCabbage -> BoilAll CutMeat -> BoilMeat [color = red] CutOnion -> FryOnion CutPotatoes -> BoilAll FryOnion -> ServeUp PeelPotatoes -> CutPotatoes } Формат выходных данных Программа должна выводить в стандартный поток вывода описание сетевого графика в виде орграфа в формате DOT. Вершины критического пути и соединяющие их дуги должны быть отмечены красным цветом. Если сетевой график содержит несколько критических путей, все они должны быть отмечены. Учитывая, что формат входных данных не гарантирует того, что сетевой график получится ациклическим, программа должна уметь обрабатывать циклические зависимости работ. Такие работы по понятным причинам не могут быть никогда выполнены и, следовательно, не могут входить в критический путь. Вершины сетевого графика, соответствующие работам, которые никогда не могут быть выполнены из-за циклических зависимостей, а также дуги, исходящие из этих вершин, должны быть отмечены синим цветом (см. пример на рис. 2).