Advertisement
Dynonychus

USACO

Dec 15th, 2024 (edited)
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define int long long
  3.  
  4. using namespace std;
  5.  
  6. const int mn = 35;
  7.  
  8. int n;
  9. int a;
  10. int b;
  11. int x;
  12. int y;
  13. string s;
  14. int i;
  15. int j;
  16. int k;
  17.  
  18. vector<string> grid(mn);
  19. vector<vector<int>> dist(mn, vector<int>(mn, 1000000000));
  20.  
  21. signed main() {
  22. freopen("distant.in", "r", stdin);
  23. freopen("distant.out", "w", stdout);
  24.  
  25. cin>>n>>a>>b;
  26.  
  27. grid.resize(n);
  28. dist.resize((n*n));
  29.  
  30. for(i=0;i<n;i++) {
  31.     cin>>s;
  32.  
  33.     grid.at(i) = s;
  34.     dist.at(i).resize(n);
  35. }
  36.  
  37. for(i=0;i<(n*n);i++)
  38.     dist[i][i] = 0;
  39.  
  40. for(i=0;i<n;i++) {
  41.     for(j=0;j<(n-1);j++) {
  42.         x = i;
  43.         x *= n;
  44.         x += j;
  45.  
  46.         if(grid[i][j] == grid[i][j+1]) {
  47.             dist[x][x+1] = a;
  48.             dist[x+1][x] = a;
  49.         }
  50.  
  51.         else {
  52.             dist[x][x+1] = b;
  53.             dist[x+1][x] = b;
  54.         }
  55.     }
  56. }
  57.  
  58. for(j=0;j<n;j++) {
  59.     for(i=0;i<(n-1);i++) {
  60.         x = i;
  61.         x *= n;
  62.         x += j;
  63.  
  64.         if(grid[i][j] == grid[i+1][j]) {
  65.             dist[x][x+n] = a;
  66.             dist[x+n][x] = a;
  67.         }
  68.  
  69.         else {
  70.             dist[x][x+n] = b;
  71.             dist[x+n][x] = b;
  72.         }
  73.     }
  74. }
  75.  
  76. for(k=0;k<(n*n);k++) {
  77.     for(i=0;i<(n*n);i++) {
  78.         for(j=0;j<(n*n);j++)
  79.             dist[i][j] = min(dist[i][j], (dist[i][k] + dist[k][j]));
  80.     }
  81. }
  82.  
  83. x = -1;
  84.  
  85. for(i=0;i<(n*n);i++) {
  86.     for(j=0;j<(n*n);j++)
  87.         x = max(x, dist[i][j]);
  88. }
  89.  
  90. cout<<x<<endl;
  91.  
  92. return 0;
  93. }
  94.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement