Rezultati

Up. imeNalogaJezikRezultatČas oddaje
ekipa5-2017 Prijateljske besede Java 0/100Napačen odgovor (WA) 20. apr '17 @ 19:58

Test Točke Porabljen spomin Porabljen čas Status
#1 0/12 34,797 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​12
<<<EOF>>>
Pravilen izhod:
​5
<<<EOF>>>
#2 0/12 33,625 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​25
<<<EOF>>>
Pravilen izhod:
​76
<<<EOF>>>
#3 0/12 40,098 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​85
<<<EOF>>>
Pravilen izhod:
​2978
<<<EOF>>>
#4 0/12 39,711 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​23
<<<EOF>>>
Pravilen izhod:
​2154
<<<EOF>>>
#5 0/13 39,727 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​25
<<<EOF>>>
Pravilen izhod:
​20
<<<EOF>>>
#6 0/13 39,609 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​17
<<<EOF>>>
Pravilen izhod:
​819
<<<EOF>>>
#7 0/13 39,652 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​3
<<<EOF>>>
Pravilen izhod:
​1
<<<EOF>>>
#8 0/13 37,961 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​28
<<<EOF>>>
Pravilen izhod:
​1178
<<<EOF>>>

Ocenjevani program (PrijatelskeBesede.java):
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

public class PrijatelskeBesede {
    static HashMap<String, List<String>> convert= new HashMap<>();
    static Set<String> already = new HashSet<>();

    public static void main(String[] args) throws Exception {

        String first = null;
        BufferedReader scanner = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(scanner.readLine());
        for (int i = 0; i < n; i++) {
            String line = scanner.readLine();
            if(first==null) {
                first = line;
            }
            String firstThree = line.substring(0, 3);
            int length = line.length();
            String lastThree = line.substring(length -3, length);

            if(!convert.containsKey(firstThree)) {
                convert.put(firstThree, new ArrayList<>());
            }
            convert.get(firstThree).add(line);

            if(!convert.containsKey(lastThree)) {
                convert.put(lastThree, new ArrayList<>());
            }
            convert.get(lastThree).add(line);
        }

        System.out.println(rek(first)-1);
    }

    public static int rek(String current) {
        int result = 0;
        int lenght = current.length();
        String start = current.substring(0, 3);
        String end= current.substring(lenght -3, lenght);

        List<String> starts = convert.get(start);
        List<String> ends = convert.get(end);

        if(!already.contains(start)) {
            result+= starts.size();
            already.add(start);
            for(String string : ends) {
                result += rek(string);
            }
        }


        if(!already.contains(end)) {
            result += ends.size();
            already.add(end);

            for(String string : starts) {
                result += rek(string);
            }
        }




        return result;
    }
}