Submission #4643642
Source Code Expand
#include<cstdio> #include<vector> #include<algorithm> using namespace std; int root; vector<int> g[100001]; int parent[17][100001]; int depth[100001]; void dfs(int v,int p,int d){ parent[0][v]=p; depth[v]=d; for(int i=0;i<g[v].size();i++){ if(g[v][i]!=p){ dfs(g[v][i],v,d+1); } } } void init(int V){ dfs(root,-1,0); for(int i=0;i+1<17;i++){ for(int j=1;j<=V;j++){ if(parent[i][j]<0){ parent[i+1][j]=-1; } else{ parent[i+1][j]=parent[i][parent[i][j]]; } } } } int lca(int x,int y){ if(depth[x]>depth[y]){ swap(x,y); } for(int i=0;i<17;i++){ if((depth[y]-depth[x]) >> i&1){ y=parent[i][y]; } } if(x==y){ return x; } for(int i=16;i>=0;i--){ if(parent[i][x]!=parent[i][y]){ x=parent[i][x]; y=parent[i][y]; } } return parent[0][x]; } int main(){ int n,x,y,q,z; scanf("%d",&n); for(int i=0;i<n-1;i++){ scanf("%d %d",&x,&y); g[x].push_back(y); g[y].push_back(x); } root=1; init(n); scanf("%d",&q); for(int i=0;i<q;i++){ scanf("%d %d",&x,&y); z=lca(x,y); printf("%d\n",1+depth[x]+depth[y]-2*depth[z]); } }
Submission Info
Submission Time | |
---|---|
Task | D - 閉路 |
User | AC961009 |
Language | C++14 (Clang 3.8.0) |
Score | 100 |
Code Size | 1427 Byte |
Status | AC |
Exec Time | 111 ms |
Memory | 19712 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 | 3 ms | 8448 KB |
subtask0_sample02.txt | AC | 3 ms | 8448 KB |
subtask0_sample03.txt | AC | 3 ms | 8448 KB |
subtask1_01.txt | AC | 37 ms | 18944 KB |
subtask1_02.txt | AC | 37 ms | 18944 KB |
subtask1_03.txt | AC | 3 ms | 8448 KB |
subtask1_04.txt | AC | 3 ms | 8576 KB |
subtask1_05.txt | AC | 4 ms | 8448 KB |
subtask1_06.txt | AC | 4 ms | 8576 KB |
subtask1_07.txt | AC | 41 ms | 12800 KB |
subtask1_08.txt | AC | 42 ms | 12800 KB |
subtask1_09.txt | AC | 42 ms | 12800 KB |
subtask1_10.txt | AC | 42 ms | 12800 KB |
subtask1_11.txt | AC | 43 ms | 12800 KB |
subtask1_12.txt | AC | 44 ms | 12800 KB |
subtask2_01.txt | AC | 65 ms | 19712 KB |
subtask2_02.txt | AC | 65 ms | 19584 KB |
subtask2_03.txt | AC | 33 ms | 8704 KB |
subtask2_04.txt | AC | 36 ms | 8704 KB |
subtask2_05.txt | AC | 42 ms | 8832 KB |
subtask2_06.txt | AC | 42 ms | 8832 KB |
subtask2_07.txt | AC | 104 ms | 13184 KB |
subtask2_08.txt | AC | 105 ms | 13056 KB |
subtask2_09.txt | AC | 108 ms | 13184 KB |
subtask2_10.txt | AC | 109 ms | 13184 KB |
subtask2_11.txt | AC | 111 ms | 13184 KB |
subtask2_12.txt | AC | 110 ms | 13184 KB |