Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

courses:a4m33pal:uloha1-2010 [2010/09/30 23:10]
redtop
courses:a4m33pal:uloha1-2010 [2025/01/03 18:28] (aktuální)
Řádek 4: Řádek 4:
  
 [[http://​cw.felk.cvut.cz/​courses/​a4m33pal/​task.php?​task=make|Zadání]] [[http://​cw.felk.cvut.cz/​courses/​a4m33pal/​task.php?​task=make|Zadání]]
 +
 +Limit: 15s
  
 Jak na to: Jak na to:
Řádek 13: Řádek 15:
  
 Jedná se v podstatě o topologické uspořádání grafu. Jedná se v podstatě o topologické uspořádání grafu.
 +
 +<code java>
 +package pal;
 +
 +import java.io.BufferedReader;​
 +import java.io.InputStreamReader;​
 +import java.util.ArrayList;​
 +import java.util.HashMap;​
 +import java.util.List;​
 +import java.util.StringTokenizer;​
 +
 +public class Main {
 +
 +    public static void main(String[] args) throws Exception {
 +        BufferedReader br = new BufferedReader(new InputStreamReader(System.in,​ "​cp1250"​));​
 +        HashMap<​String,​ Uloha> ulohy = new HashMap<​String,​ Uloha>​();​
 +        Uloha uloha = null;
 +        boolean zacatek = true;
 +        Uloha prvni = null;
 +
 +        String vz = br.readLine();​
 +
 +        while (vz != null) {
 +            if (vz.charAt(0) == '​\t'​) {
 +                uloha.prikazy.append(vz.substring(1));​
 +                uloha.prikazy.append("​\n"​);​
 +            } else {
 +                StringTokenizer st = new StringTokenizer(vz,​ " :");
 +                String nazev = st.nextToken();​
 +                if (ulohy.containsKey(nazev)) {
 +                    uloha = ulohy.get(nazev);​
 +                } else {
 +                    uloha = new Uloha();
 +                    if (zacatek) {
 +                        prvni = uloha;
 +                        zacatek = false;
 +                    }
 +                    ulohy.put(nazev,​ uloha);
 +                }
 +                while (st.hasMoreTokens()) {
 +                    nazev = st.nextToken();​
 +                    if (!ulohy.containsKey(nazev)) {
 +                        ulohy.put(nazev,​ new Uloha());
 +                    }
 +                    uloha.pridej(ulohy.get(nazev));​
 +                }
 +            }
 +            vz = br.readLine();​
 +        }
 +        StringBuilder out = new StringBuilder();​
 +        prvni.vypis(out);​
 +        System.out.print(out);​
 +    }
 +}
 +
 +class Uloha {
 +    boolean vypsana = false;
 +    boolean navstivena = false;
 +    List<​Uloha>​ podulohy = new ArrayList<​Uloha>​();​
 +    StringBuilder prikazy = new StringBuilder();​
 +
 +    void pridej(Uloha poduloha) {
 +        podulohy.add(poduloha);​
 +    }
 +
 +    void vypis(StringBuilder out) {
 +        if (!vypsana) {
 +            if (navstivena) {
 +                System.out.println("​ERROR"​);​
 +                System.exit(0);​
 +            }
 +            navstivena = true;
 +            for (Uloha uloha : podulohy) {
 +                uloha.vypis(out);​
 +            }
 +            out.append(prikazy);​
 +            vypsana = true;
 +        }
 +    }
 +}
 +</​code>​
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
  
  
courses/a4m33pal/uloha1-2010.1285881056.txt.gz · Poslední úprava: 2025/01/03 18:24 (upraveno mimo DokuWiki)
Nahoru
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0