Advertisement
Guest User

FUleco

a guest
Jun 21st, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define ll long long
  4. #define for(i,a,n) for(int i=a; i<n; i++)
  5. #define mms(matrica,n) memset(matrica,n,sizeof(matrica))
  6. #define p_b push_back
  7. #define m_p make_pair
  8.  
  9. using namespace std;
  10.  
  11. vector<int> sosedstvo[500000];
  12. string s;
  13. int n;
  14. int dokaj=-1;
  15. int node=0;
  16. int parent[500000];
  17.  
  18. int poc, kra;
  19. int a,b;
  20.  
  21. void gradenje(int tem){
  22.  
  23. dokaj++;
  24. if(dokaj==n)
  25. return;
  26.  
  27. if(dokaj==a) poc=tem;
  28. else if(dokaj==b) kra=tem;
  29.  
  30.  
  31. if(s[dokaj]=='U'){
  32. node++;
  33. parent[node]=tem;
  34. sosedstvo[tem].p_b(node);
  35. sosedstvo[node].p_b(tem);
  36. gradenje(node);
  37. }
  38. else if(s[dokaj]=='D'){
  39. gradenje(parent[tem]);
  40. }
  41. }
  42.  
  43. int main()
  44. {
  45. mms(parent,-1);
  46.  
  47.  
  48. cin>>a>>b;
  49. cin>>s;
  50. n=s.size();
  51. parent[0]=0;
  52. gradenje(0);
  53.  
  54. // for(i,0,10){
  55. // cout<<i<<endl;
  56. // for(j,0,sosedstvo[i].size()){
  57. // cout<<sosedstvo[i][j]<<" ";
  58. // }
  59. // cout<<endl<<endl<<endl;
  60. // }
  61.  
  62.  
  63. queue<pair<int, int>> q;
  64. q.push(m_p(poc,0));
  65. bool visited[node];
  66. mms(visited,0);
  67. visited[poc]=1;
  68. while(!q.empty()){
  69.  
  70. int teme=q.front().first;
  71. int dist=q.front().second;
  72. q.pop();
  73.  
  74. //cout<<teme<<endl;
  75. if(teme==kra){
  76. cout<<dist;
  77. return 0;
  78. }
  79.  
  80. for(i,0,sosedstvo[teme].size()){
  81. int novo=sosedstvo[teme][i];
  82. if(!visited[novo]){
  83. q.push(m_p(novo,dist+1));
  84. }
  85. }
  86. }
  87.  
  88. //cout<<poc<<" "<<kra;
  89. return 0;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement