Saleh127

UVA 10496

Sep 7th, 2020
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4.  
  5. struct x
  6. {
  7.  
  8. ll fst,scnd;
  9.  
  10. } a[50];
  11.  
  12. ll c,d,e,x,y,n,f,ans,used[50],crnt[50];
  13.  
  14. void backtracking(ll indx)
  15. {
  16.  
  17. if(indx==n)
  18. {
  19. ll mx=abs(x-a[crnt[0]].fst)+abs(y-a[crnt[0]].scnd);
  20.  
  21. for(ll i=1; i<n; i++)
  22. {
  23. mx+=abs(a[crnt[i-1]].fst-a[crnt[i]].fst)+abs(a[crnt[i-1]].scnd-a[crnt[i]].scnd);
  24. }
  25.  
  26. mx+=abs(x-a[crnt[n-1]].fst)+abs(y-a[crnt[n-1]].scnd);
  27.  
  28. if(mx<ans)
  29. {
  30. ans=mx;
  31. }
  32. return ;
  33. }
  34.  
  35.  
  36. for(ll i=0; i<n; i++)
  37. {
  38. if(used[i]==0)
  39. {
  40. used[i]=1;
  41. crnt[indx]=i;
  42. backtracking(indx+1);
  43. used[i]=0;
  44. }
  45.  
  46. else continue;
  47. }
  48. return;
  49. }
  50.  
  51.  
  52. int main()
  53. {
  54. ios_base::sync_with_stdio(0);
  55. cin.tie(0);
  56. cout.tie(0);
  57.  
  58. ll t;
  59. cin>>t;
  60. while(t--)
  61. {
  62.  
  63. cin>>c>>d;
  64. cin>>x>>y;
  65. cin>>n;
  66. ans=1000000000;
  67.  
  68. for(ll i=0; i<n; i++)
  69. {
  70. cin>>a[i].fst>>a[i].scnd;
  71. }
  72.  
  73. backtracking(0);
  74.  
  75. cout<<"The shortest path has length "<<ans<<endl;
  76. }
  77.  
  78. return 0;
  79. }
  80.  
Advertisement
Add Comment
Please, Sign In to add comment