Pagini recente » Cod sursa (job #611628) | Cod sursa (job #382786) | Cod sursa (job #1481852) | Cod sursa (job #1483127) | Cod sursa (job #1939401)
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();
}
}
}