Submission #1791038
Source Code Expand
import java.util.*; import java.io.*; public class Main { private static IO io = new IO(); public static void main(String[] args) { int n = io.nextInt(); List<ArrayList<Integer>> list = new ArrayList<>(); for (int i = 0; i < n; i++) list.add(new ArrayList<>()); for (int i = 0; i < n - 1; i++) { int a = io.nextInt()-1; int b = io.nextInt()-1; list.get(a).add(b); list.get(b).add(a); } int q = io.nextInt(); Deque<int[]> que = new ArrayDeque<>(); boolean v[] = new boolean[n]; for (int i = 0; i < q; i++) { int a = io.nextInt()-1; int b = io.nextInt()-1; Arrays.fill(v, false); v[a] = true; que.clear(); que.offer(new int[] {0, a}); // Q=1ならaからbまで辿って辺を数えられる // O(NQ)だから制限なしだとTLE int ans = 0; while (!que.isEmpty()) { int poll[] = que.poll(); int dis = poll[0]; int now = poll[1]; if (now==b) { ans = dis; break; } int ways = list.get(now).size(); for (int j = 0; j < ways; j++) { int to = list.get(now).get(j); if (!v[to]) { que.offer(new int[] {dis+1, to}); v[to] = true; } } } System.out.println(ans+1); } } static class IO extends PrintWriter { private final InputStream in; private final byte[] buffer = new byte[1024]; private int ptr = 0; private int buflen = 0; IO() { this(System.in); } IO(InputStream source) { super(System.out); this.in = source; } boolean hasNextByte() { if (ptr < buflen) return true; else { ptr = 0; try { buflen = in.read(buffer); } catch (IOException e) { e.printStackTrace(); } if (buflen <= 0) return false; } return true; } int readByte() { if (hasNextByte()) return buffer[ptr++]; else return -1; } boolean isPrintableChar(int c) {return 33<=c &&c <=126;} void skipUnprintable() {while(hasNextByte() && !isPrintableChar(buffer[ptr]))ptr++;} boolean hasNext() { skipUnprintable(); return hasNextByte(); } long nextLong() { if (!hasNext()) throw new NoSuchElementException(); long n = 0; boolean minus = false; int b = readByte(); if (b == '-') { minus = true; b = readByte(); } if (b < '0' || '9' < b) throw new NumberFormatException(); while (true) { if ('0' <= b && b <= '9') { n *= 10; n += b - '0'; } else if (b == -1 || !isPrintableChar(b)) return minus ? -n : n; else throw new NumberFormatException(); b = readByte(); } } int nextInt() { long nl = nextLong(); if (nl < Integer.MIN_VALUE || nl > Integer.MAX_VALUE) throw new NumberFormatException(); return (int) nl; } public void close() { super.close(); try { in.close(); } catch (IOException ignored) { } } } }
Submission Info
Submission Time | |
---|---|
Task | D - 閉路 |
User | creep04 |
Language | Java8 (OpenJDK 1.8.0) |
Score | 30 |
Code Size | 3936 Byte |
Status | TLE |
Exec Time | 2110 ms |
Memory | 337516 KB |
Judge Result
Set Name | Sample | Subtask1 | Subtask2 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 30 / 30 | 0 / 70 | ||||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt |
Subtask1 | subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt |
Subtask2 | subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
subtask0_sample01.txt | AC | 71 ms | 19028 KB |
subtask0_sample02.txt | AC | 68 ms | 15956 KB |
subtask0_sample03.txt | AC | 68 ms | 20692 KB |
subtask1_01.txt | AC | 188 ms | 48704 KB |
subtask1_02.txt | AC | 165 ms | 36564 KB |
subtask1_03.txt | AC | 69 ms | 18516 KB |
subtask1_04.txt | AC | 70 ms | 19412 KB |
subtask1_05.txt | AC | 87 ms | 21204 KB |
subtask1_06.txt | AC | 77 ms | 19284 KB |
subtask1_07.txt | AC | 164 ms | 37812 KB |
subtask1_08.txt | AC | 178 ms | 38120 KB |
subtask1_09.txt | AC | 147 ms | 34508 KB |
subtask1_10.txt | AC | 153 ms | 35068 KB |
subtask1_11.txt | AC | 153 ms | 36852 KB |
subtask1_12.txt | AC | 154 ms | 35052 KB |
subtask2_01.txt | TLE | 2110 ms | 334272 KB |
subtask2_02.txt | TLE | 2110 ms | 337516 KB |
subtask2_03.txt | AC | 745 ms | 48244 KB |
subtask2_04.txt | AC | 1057 ms | 57772 KB |
subtask2_05.txt | TLE | 2109 ms | 148544 KB |
subtask2_06.txt | TLE | 2109 ms | 153508 KB |
subtask2_07.txt | TLE | 2106 ms | 242092 KB |
subtask2_08.txt | TLE | 2109 ms | 234832 KB |
subtask2_09.txt | TLE | 2105 ms | 166824 KB |
subtask2_10.txt | TLE | 2105 ms | 168484 KB |
subtask2_11.txt | TLE | 2105 ms | 181504 KB |
subtask2_12.txt | TLE | 2105 ms | 172180 KB |