Submission #1294742
Source Code Expand
using System; using System.Collections.Generic; using System.Linq; static class Program { static void Main() { new Magatro().Solve(); } } class Node { public int Num;//いるかな? public List<int> Parent = new List<int>();//Parent[i] 2^i個上 public int Depth; } class Magatro { private int N; List<int>[] R; Node[] Tree; private int Q; private void MakeTree() { Tree = new Node[N]; for (int i = 0; i < N; i++) { Tree[i] = new Node(); Tree[i].Num = i; } Tree[0].Num = 0; Tree[0].Depth = 0; Queue<int> q = new Queue<int>(); q.Enqueue(0); while (q.Count > 0)//木 { int d = q.Dequeue(); foreach (int i in R[d]) { if (Tree[d].Parent.Count > 0 && i == Tree[d].Parent[0]) { continue; } Tree[i].Parent.Add(d); Tree[i].Depth = Tree[d].Depth + 1; q.Enqueue(i); } } for(int i = 1; i < 20; i++) { for (int j = 0; j < N; j++) { int p = 1 << i; if (Tree[j].Depth >= p)//2^iこ上があるか { Tree[j].Parent.Add(Tree[Tree[j].Parent[i-1]].Parent[i-1]); } } } } private int Query(int a, int b) { int res = 0; if (Tree[a].Depth > Tree[b].Depth) { a ^= b; b ^= a; a ^= b; } int sa = Tree[b].Depth - Tree[a].Depth; int ii = 0; while (sa > 0) { if (sa % 2 == 1) { b = Tree[b].Parent[ii]; res += 1 << ii; } ii++; sa /= 2; } if (a == b) { return res; } while (true) { int j = -1; for (int i = 0; i < Tree[a].Parent.Count; i++) { if (Tree[a].Parent[i] == Tree[b].Parent[i]) { break; } j = i; } if (j == -1) { res += 2; break; } else { a = Tree[a].Parent[j]; b = Tree[b].Parent[j]; res += 1 << (j + 1); } } return res; } public void Solve() { N = int.Parse(Console.ReadLine()); R = new List<int>[N]; for (int i = 0; i < N; i++) { R[i] = new List<int>(); } for (int i = 0; i < N - 1; i++) { var line = Console.ReadLine().Split(' '); int x = int.Parse(line[0]) - 1; int y = int.Parse(line[1]) - 1; R[x].Add(y); R[y].Add(x); } MakeTree(); Q = int.Parse(Console.ReadLine()); for (int i = 0; i < Q; i++) { var line = Console.ReadLine().Split(' '); int a = int.Parse(line[0]) - 1; int b = int.Parse(line[1]) - 1; Console.WriteLine(Query(a, b) + 1); } } }
Submission Info
Submission Time | |
---|---|
Task | D - 閉路 |
User | mban |
Language | C# (Mono 4.6.2.0) |
Score | 100 |
Code Size | 3468 Byte |
Status | AC |
Exec Time | 1093 ms |
Memory | 63824 KB |
Judge Result
Set Name | Sample | Subtask1 | Subtask2 | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 30 / 30 | 70 / 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 | 23 ms | 11348 KB |
subtask0_sample02.txt | AC | 23 ms | 11348 KB |
subtask0_sample03.txt | AC | 23 ms | 11348 KB |
subtask1_01.txt | AC | 229 ms | 52056 KB |
subtask1_02.txt | AC | 231 ms | 54104 KB |
subtask1_03.txt | AC | 23 ms | 11348 KB |
subtask1_04.txt | AC | 23 ms | 9300 KB |
subtask1_05.txt | AC | 25 ms | 11452 KB |
subtask1_06.txt | AC | 25 ms | 13500 KB |
subtask1_07.txt | AC | 250 ms | 40228 KB |
subtask1_08.txt | AC | 251 ms | 40276 KB |
subtask1_09.txt | AC | 273 ms | 44392 KB |
subtask1_10.txt | AC | 321 ms | 46432 KB |
subtask1_11.txt | AC | 310 ms | 54504 KB |
subtask1_12.txt | AC | 307 ms | 48104 KB |
subtask2_01.txt | AC | 900 ms | 61776 KB |
subtask2_02.txt | AC | 911 ms | 63824 KB |
subtask2_03.txt | AC | 674 ms | 15680 KB |
subtask2_04.txt | AC | 653 ms | 15676 KB |
subtask2_05.txt | AC | 692 ms | 15904 KB |
subtask2_06.txt | AC | 699 ms | 18080 KB |
subtask2_07.txt | AC | 987 ms | 46096 KB |
subtask2_08.txt | AC | 999 ms | 39992 KB |
subtask2_09.txt | AC | 1041 ms | 43984 KB |
subtask2_10.txt | AC | 1093 ms | 52040 KB |
subtask2_11.txt | AC | 1083 ms | 55372 KB |
subtask2_12.txt | AC | 1082 ms | 44624 KB |