====== Zrychlení Javy ====== Java není o moc pomalejší než C/C++. Musíte ale kód patřičně optimalizovat. Nejdřív si program napište tak jak umíte, otestujte v upload systemu že dává správné řešení na menších datech. Pak se vrhněte na optimalizaci: * pro vstup nepoužívejte Scanner, ale BufferedReader viz http://cw.felk.cvut.cz/doku.php/courses/a4m33pal/cviceni/java * pro výstup použijte jenom jeden System.out.println() * pro spojování stringů používejte StringBuilder a nikoli "prvni"+"druhy" * pozor na funkce pro práci se stringy jako startsWith, replace, trim - většinou jdou nahradit subStringem nebo porovnáváním charů, je to rychlejší * pro rozdělení řetězce a parsování používejte StringTokenizer * optimalizujte celý kód, nikoli jenom vlastní algoritmus. Mě nejvíc času zabrala tvorba grafu parsováním vstupu. * přidejte slovo final k public metodám, které nepřetěžujete * ArrayList bývá rychlejší než LinkedList * HashMap se velmi hodí na uskladnění např. uzlů grafu, má rychlé vyhledávání * nevytvářejte zbytečné lokální proměnné, kratší kód bývá rychlejší * HashSet je dobré používat jen pokud chcete kontrolovat, zda v poli už je nějaký String. Jindy je lepší použít ArrayList (aspoň tedy podle mého zjištění, ale je možné, že to je jinak, tak to kdyžtak smažte.)