Submission #1367868


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
#define MAX_V 100001
 
int dep[MAX_V], par[MAX_V][19];
vector<int> G[MAX_V];
void dfs(int v,int u,int d){
  dep[v]=d;
  for(int i=0; i<G[v].size(); i++){
    int w=G[v][i];if(w==u) continue;
    par[w][0]=v;dfs(w,v,d+1);
  }
}
int lcp(int a,int b){
  if(dep[a]<dep[b]) swap(a,b);
  for(int i=0; i<19; i++){
    if(((dep[a]-dep[b])&(1<<i))) a=par[a][i];
  }
  if(a==b) return a;
  for(int i=18;i>=0;i--){
    if(par[a][i]!=par[b][i]) a=par[a][i],b=par[b][i];
  }
  return par[a][0];
}
void lca() {
  memset(par,0,sizeof(par));
  dfs(0,-1,0);
  for(int i=0; i<18; i++) for(int j=0; j<MAX_V; j++) par[j][i+1]=par[par[j][i]][i];
}
int main() {
  int n;
  cin >> n;
  for(int i=0; i<n-1; i++) {
    int x,y;
    cin >> x >> y;
    x--;y--;
    G[x].push_back(y);
    G[y].push_back(x);
  }
  lca();
  int m;
  cin >> m;
  for(int i=0; i<m; i++) {
    int x,y;
    cin >> x >> y;
    x--;y--;
    cout << dep[x]+dep[y]-2*dep[lcp(x,y)]+1 << endl;
  }
  return 0;
}

Submission Info

Submission Time
Task D - 閉路
User kzyKT
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1052 Byte
Status AC
Exec Time 360 ms
Memory 20480 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 30 / 30 70 / 70
Status
AC × 3
AC × 12
AC × 27
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 10 ms 9984 KB
subtask0_sample02.txt AC 10 ms 9984 KB
subtask0_sample03.txt AC 10 ms 9984 KB
subtask1_01.txt AC 94 ms 19712 KB
subtask1_02.txt AC 96 ms 19840 KB
subtask1_03.txt AC 10 ms 9984 KB
subtask1_04.txt AC 10 ms 9984 KB
subtask1_05.txt AC 10 ms 9984 KB
subtask1_06.txt AC 11 ms 10112 KB
subtask1_07.txt AC 101 ms 13696 KB
subtask1_08.txt AC 102 ms 13568 KB
subtask1_09.txt AC 100 ms 13568 KB
subtask1_10.txt AC 103 ms 13568 KB
subtask1_11.txt AC 102 ms 13568 KB
subtask1_12.txt AC 102 ms 13568 KB
subtask2_01.txt AC 312 ms 20480 KB
subtask2_02.txt AC 320 ms 20352 KB
subtask2_03.txt AC 212 ms 10240 KB
subtask2_04.txt AC 224 ms 10240 KB
subtask2_05.txt AC 236 ms 10368 KB
subtask2_06.txt AC 239 ms 10368 KB
subtask2_07.txt AC 351 ms 13952 KB
subtask2_08.txt AC 344 ms 13824 KB
subtask2_09.txt AC 351 ms 13952 KB
subtask2_10.txt AC 355 ms 13952 KB
subtask2_11.txt AC 358 ms 13952 KB
subtask2_12.txt AC 360 ms 13952 KB