From 34d55c9fd5b9c38d2ba4385b6fcea2f230275624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20Farbi=C5=9B?= Date: Tue, 18 Oct 2022 21:57:39 +0200 Subject: [PATCH] topo +scc --- topo+scc.md | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 topo+scc.md diff --git a/topo+scc.md b/topo+scc.md new file mode 100644 index 0000000..6f5366d --- /dev/null +++ b/topo+scc.md @@ -0,0 +1,74 @@ +Zadania domowe z sortowania topologicznego i silinie spójnych składowych +=== + +Rozwiązanie każdego zadania powinno być programem komputerowym. Ten progam powinien +się budować poprzez system budowania `CMake` lub `make` na bossie. Jeśli w katalogu +głównym Waszego repozytorium znajduje się plik `CMakeLists.txt`, użyję systemu `CMake`, +jeśli nie - to systemu `make`. + +Budowanie z `CMake` +--- +Będę to robił mniej więcej tak: +``` +$ mkdir -p build +$ cd build +$ cmake .. +$ make +``` + +Budowanie z `make` +--- +Tu będzie nawet prościej: +``` +$ make +``` + +Zadania +--- +Każde zadanie polega na napisaniu programu komputerowego, który wczytuje z wejścia +opis grafu, oblicza *coś* i wypisuje opis tego *czegoś* na wyjście. Format wejścia +jest następujący +``` +n m +u_1 v_1 +u_2 v_2 +... +u_m v_m +``` + +gdzie `n` i `m` oznaczają odpowiednio liczbę wierzchołków oraz krawędzi. `u_i` to +początki krawędzi, a `v_i` - ich końce. Wierzchołki są numerowane różnymi liczbami +całkowitymi od `1` do `n`. + +Zadanie 1 +--- +``` +Kod zadania: topo/sort +``` +Wypisz na wyjście jakikolwiek z porządków topologicznych grafu. Jeśli nie ma, to wypisz `NIE`. Ograniczenia: `n ≤ 200000, m ≤ 300000`. + +Zadanie 2 +--- +``` +Kod zadania: topo/count +``` +Wypisz na wyjście liczbę porządków topologicznych grafu. Ograniczenia: `n ≤ 20`. + +Zadanie 3 +--- +``` +Kod zadania: scc/partition +``` +Wypisz `n` liczb całkowitych z zakresu `1...n`. `i`-ta i `j`-ta powinny być równe wtedy +i tylko wtedy, gdy `i` oraz `j` są w jednej silnie spójnej składowej. Ograniczenia: +`n ≤ 200000, m ≤ 300000`. + +Zadanie 3 +--- +``` +Kod zadania: scc/make1 +``` +Dodaj do grafu jak najmniejszą liczbę krawędzi, tak żeby graf był silnie spójny. +Na wyjście wypisz liczbę dodanych krawędzi oraz, w kolejnych wierszach, końce +kolejnych krawędzi. Ograniczenia: `n ≤ 200000, m ≤ 300000`. +