Po veľkom úspechu pri stavbe druhého slovenského mrakodrapu v Kokave nad Rimavicou sa dcérska firma Trojstenu (ktorá sa zaoberá cestnými stavbami) rozhodla pustiť do stavby ciest. Keďže zamestnanci v tejto firme sú výrazne lepší programátori ako robotníci, tak sa nejaké cesty síce postavili, ale iba tak veľmi náhodne. Čo je ešte horšie, všetky postavené cesty sú iba jednosmerné, na druhý smer sa trochu zabudlo.
To sa ľuďom ani trochu nepáčilo a teda sa začali búriť. Aby vedenie Trojstenu upokojilo situáciu, rozhodlo sa sľúbiť ľuďom, že označí postavené cesty tak, aby z každého mesta viedla aspoň jedna cesta. Bohužiaľ, tento nerozvážny sľub vedenie dalo pred tým, než si overili, že to je možné.
Keďže všetci v Trojstene sa vybrali otáčať cedule na cestách, tak neostal nikto, kto by vlastne zistil, či je ich možné pootáčať tak aby splnili sľub. Vedeli by ste to zistiť vy?
Úloha
Máme cestnú sieť, ktorá sa skladá z miest a ciest medzi nimi. Tieto cesty sú všetky jednosmerné a vašou úlohou je zistiť, či ich vieme orientovať tak, aby z každého mesta išla von aspoň jedna cesta. Každá cesta spája vždy práve dve mestá, nemôže ísť z mesta do toho istého mesta a medzi dvomi mestami vedie vždy najviac jedna cesta.
Formát vstupu
V prvom riadku vstupu sú dve medzerou oddelené čísla \(n, m\) (\(1 \leq n \leq 10^6\), \(0 \leq m \leq 10^6\)) počet miest a počet ciest.
Nasleduje \(m\) riadkov, na každom sú dve medzerou oddelené čísla \(a,b\) (\(0 \leq a,b < n, a \neq b\)), ktoré hovoria, že mestá \(a\) a \(b\) sú spojené cestou. Mestá sú označené číslami od \(0\) po \(n-1\).
V jednotlivých sadách platia nasledujúce obmedzenia:
Sada | 1 | 2 | 3 | 4 |
---|---|---|---|---|
\(1 \leq n \leq\) | \(20\) | \(100\) | \(1\,000\) | \(100\,000\) |
\(1 \leq m \leq\) | \(40\) | \(10\,000\) | \(1\,000\,000\) | \(1\,000\,000\) |
Formát výstupu
Vypíšte jediný riadok, na ktorom je buď text ano
, ak
vieme orientovať cesty tak, aby z každého mesta viedla aspoň jedna
cesta. Ak to nejde, vypíšte nie
.
Príklady
Input:
3 3
0 1
1 2
2 0
Output:
ano
V tomto prípade vieme napríklad orientovať cesty tak, že cesty
idú 1 -> 0
, 0 -> 2
a
2 -> 0
.
Input:
4 3
0 1
1 2
2 0
Output:
nie
Podobný prípad, ale máme o jedno mesto naviac (mesto 3). Z tohoto mesta žiadna cesta vychádzať nemôže, keďže na žiadnej ceste nie je.
Input:
4 2
0 1
2 3
Output:
nie
Nech orientujeme cesty akokoľvek, nevieme zariadiť, aby zo všetkých miest vychádzala aspoň jedna cesta.
Input:
6 6
0 1
1 2
2 0
3 4
4 5
5 3
Output:
ano
Ak cesty orientujeme ako 0 -> 1
,
1 -> 2
, 2 -> 0
, 3 -> 4
,
4 -> 5
, 5 -> 3
, tak z každého mesta
vychádza aspoň jedna cesta.
Odovzdávanie
Na odovzdávanie sa musíš prihlásiť
Otázky a diskusia
Po skončení kola budete mať príležitosť na diskutovanie o riešeniach v diskusii pod vzorovým riešením.