Cod sursa(job #1939401)

Utilizator lucibitLucian Onea lucibit Data 25 martie 2017 18:18:28
Problema Stramosi Scor 30
Compilator java Status done
Runda Arhiva de probleme Marime 2.19 kb
import java.io.*;
import java.util.*;

public class Main {

    private final static String IN_FILE = "stramosi.in";
    private final static String OUT_FILE = "stramosi.out";


    class AncestorPQ {
        int rank, node;
        public AncestorPQ(int rank, int node) {
            this.rank=rank;
            this.node=node;
        }
    }

    static SortedMap<Integer, Integer>[] a;
    static int parent[];

    private static int dig(int p, int q) {
        System.out.println("step");
        if (p == 0) {
            return 0;
        }
        if (a[p].get(q) !=null) {
           return a[p].get(q);
        }
        else {
            int res = dig(parent[p], q-1);

            a[p].put(q, res);
            return res;
        }

    }

    public static void main(String[] args) {
        try {
            //READING PART
            BufferedReader br = new BufferedReader(new FileReader(IN_FILE));
            String line1 = br.readLine();
            StringTokenizer st = new StringTokenizer(line1);
            int i, j;

            int n = Integer.valueOf(st.nextToken());
            int m = Integer.valueOf(st.nextToken());
            parent = new int[n+1];
            st = new StringTokenizer(br.readLine());
            i=1;
            while(st.hasMoreTokens()) {
               parent[i++] = Integer.valueOf(st.nextToken());
            }


            a = (TreeMap<Integer, Integer>[]) new TreeMap<?,?>[n+1];

            for (i = 1; i <= n; i++ ) {
                a[i] = new TreeMap<Integer, Integer>();
                a[i].put(1, parent[i]);
            }


            BufferedWriter bw = new BufferedWriter(new FileWriter(OUT_FILE));
            for (int t = 0; t < m; t++) {
                st = new StringTokenizer(br.readLine());
                int p = Integer.valueOf(st.nextToken());
                int q = Integer.valueOf(st.nextToken());
                bw.write(String.valueOf(dig(p,q)));
                bw.write('\n');

            }

            br.close();




            bw.write(String.valueOf(0));
            bw.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}