Submission #2209883
Source Code Expand
#include<iostream> #include<cstring> #include<algorithm> #include<vector> using namespace std; int pa[100005][20];//parent //place, 2^i parent vector<int> path[100005]; vector<int> his;//history bool used[100005]; int deep[100005]; int s[100005]; void make_tree(int t){ int a; int i,j,k; used[t]=true; deep[t]=his.size(); his.push_back(t); for(i=0;;i++){ j=his.size()-(1<<i)-1; if(j<0)break; pa[t][i]=his[j]; } for(i=0;i<path[t].size();i++){ a=path[t][i]; if(used[a])continue; make_tree(a); } his.pop_back(); } int check(int a,int b){ int i,j,k; int s=0; if(deep[a]<deep[b])swap(a,b); k=deep[a]-deep[b]; for(i=0;k>0;i++){ if((k&(1<<i))!=0){ k-=(1<<i); a=pa[a][i]; } } k=deep[a]; for(j=0;k>=(1<<j);j++){} j--; for(i=j;i>=0;i--){ if(pa[a][i]!=pa[b][i])a=pa[a][i],b=pa[b][i]; } if(a==b)s=a; else s=pa[a][0]; return s; } int main(){ int n,m; int i,j,k; int a,b; memset(pa,-1,sizeof(pa)); cin>>n; for(i=0;i<n-1;i++){ cin>>a>>b; a--,b--; path[a].push_back(b); path[b].push_back(a); } make_tree(0); cin>>m; for(i=0;i<m;i++){ cin>>a>>b; a--,b--; s[i]=deep[a]+deep[b]-2*deep[check(a,b)]+1; } for(i=0;i<m;i++){ cout<<s[i]<<endl; } return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - 閉路 |
User | moririn2528 |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 1296 Byte |
Status | AC |
Exec Time | 333 ms |
Memory | 18680 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 | 4 ms | 10368 KB |
subtask0_sample02.txt | AC | 4 ms | 10368 KB |
subtask0_sample03.txt | AC | 4 ms | 10368 KB |
subtask1_01.txt | AC | 88 ms | 17656 KB |
subtask1_02.txt | AC | 89 ms | 17656 KB |
subtask1_03.txt | AC | 4 ms | 10368 KB |
subtask1_04.txt | AC | 4 ms | 10368 KB |
subtask1_05.txt | AC | 5 ms | 10496 KB |
subtask1_06.txt | AC | 5 ms | 10496 KB |
subtask1_07.txt | AC | 99 ms | 14080 KB |
subtask1_08.txt | AC | 97 ms | 14080 KB |
subtask1_09.txt | AC | 97 ms | 14080 KB |
subtask1_10.txt | AC | 101 ms | 14080 KB |
subtask1_11.txt | AC | 98 ms | 14080 KB |
subtask1_12.txt | AC | 99 ms | 14080 KB |
subtask2_01.txt | AC | 299 ms | 18680 KB |
subtask2_02.txt | AC | 312 ms | 18680 KB |
subtask2_03.txt | AC | 191 ms | 11008 KB |
subtask2_04.txt | AC | 203 ms | 11008 KB |
subtask2_05.txt | AC | 218 ms | 11136 KB |
subtask2_06.txt | AC | 214 ms | 11136 KB |
subtask2_07.txt | AC | 331 ms | 14848 KB |
subtask2_08.txt | AC | 330 ms | 14720 KB |
subtask2_09.txt | AC | 331 ms | 14720 KB |
subtask2_10.txt | AC | 333 ms | 14848 KB |
subtask2_11.txt | AC | 332 ms | 14848 KB |
subtask2_12.txt | AC | 333 ms | 14848 KB |