fork download
  1. #include <iostream>
  2. using namespace std;
  3. #include <vector>
  4. #include <algorithm>
  5.  
  6. vector<vector<int>> adj;
  7. void dfs1(int node,int pare,vector<int> &par,vector<vector<int>> &adj){
  8. par[node]=pare;
  9. for (auto it : adj[node]){
  10. if (it!=pare){
  11. dfs1(it,node,par,adj);
  12.  
  13. }
  14. }
  15. }
  16. void dfs2(int node,vector<vector<int>> &adj,int par,vector<int> &arr){
  17. arr.push_back(node);
  18.  
  19. for (auto it : adj[node]){
  20. if (it!=par){
  21. dfs2(it,adj,node,arr);
  22.  
  23. }
  24. }
  25.  
  26. }
  27. int main() {
  28. int m;
  29. cin>>m;
  30. adj.resize(m+1);
  31. for (int i=0;i<m-1;i++){
  32. int u,v;
  33. cin>>u>>v;
  34. adj[u].push_back(v);
  35. adj[v].push_back(u);
  36.  
  37. }
  38. for (int i=1;i<=m;i++){
  39. sort(adj[i].begin(),adj[i].end());
  40.  
  41. }
  42.  
  43.  
  44.  
  45. vector<int> par(m+1);
  46. dfs1(1,0,par,adj);
  47.  
  48. int q;
  49. cin>>q;
  50. while (q>0){
  51. int n;
  52.  
  53. cin>>n;
  54. int k;
  55. cin>>k;
  56. vector<int> arr;
  57. dfs2(n,adj,par[n],arr);
  58. cout<<arr[k-1]<<endl;
  59.  
  60. q--;
  61.  
  62. }
  63.  
  64.  
  65.  
  66. return 0;
  67. }
Success #stdin #stdout 0.01s 5320KB
stdin
7
1 2
1 3
2 4
2 5
3 6
3 7
5
1 1
1 4
2 3
3 2
4 1
stdout
1
5
5
6
4