当前位置:   article > 正文

AcWing 2060.奶牛选美

AcWing 2060.奶牛选美

DFS暴力即可。

这个其实就是连通块的模型,只不过加了一点条件让你求两个连通块之间的最短距离而已,这里需要把连通块的所有坐标都存储起来,然后再进行相减求绝对值,看看哪一个最小就选哪个,这个值就是最小值了,这里用了pair<int,int>作为容器。

注意:里面的index变量如果定义在了最外面,在AcWing里面会报错,但是在VS上是没有问题的。

上代码:

  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<cstring>
  4. #include<cstdlib>
  5. #include<cmath>
  6. #include<vector>
  7. #include<algorithm>
  8. #include<stack>
  9. #include<queue>
  10. #include<sstream>
  11. #include<map>
  12. #include<limits.h>
  13. #include<set>
  14. #define MAX 100
  15. #define _for(i,a,b) for(int i=a;i<(b);i++)
  16. #define ALL(x) x.begin(),x.end()
  17. using namespace std;
  18. using PII=pair<int, int>;
  19. int n, m,res=INT_MAX;
  20. char s[MAX][MAX];
  21. int st[MAX][MAX];
  22. int dx[] = { -1,1,0,0 };
  23. int dy[] = { 0,0,-1,1 };
  24. vector<PII>bandian[2];
  25. void dfs(vector<PII>&as,int x, int y) {
  26. as.push_back({x,y});
  27. for (int i = 0; i < 4; i++) {
  28. int a = dx[i] + x;
  29. int b = dy[i] + y;
  30. if (st[a][b])
  31. continue;
  32. if (s[a][b] != 'X')
  33. continue;
  34. if (a > n || a <= 0 || b > m || b <= 0)
  35. continue;
  36. if (!st[a][b] && s[a][b] == 'X') {
  37. st[a][b] = 1;
  38. dfs(as,a, b);
  39. }
  40. }
  41. }
  42. signed main() {
  43. ios::sync_with_stdio(false);
  44. cin.tie(NULL); cout.tie(NULL);
  45. cin >> n >> m;
  46. for (int i = 1; i <= n; i++) {
  47. for (int j = 1; j <= m; j++) {
  48. cin >> s[i][j];
  49. }
  50. }
  51. int index=0;
  52. for (int i = 1; i <= n; i++) {
  53. for (int j = 1; j <= m; j++) {
  54. if (!st[i][j]&&s[i][j]=='X')
  55. {
  56. st[i][j] = 1;
  57. dfs(bandian[index++], i, j);
  58. }
  59. }
  60. }
  61. for (PII& it1:bandian[0]) {
  62. for (PII& it2 : bandian[1]) {
  63. res = min(res, abs(it1.first - it2.first)+abs(it1.second - it2.second));
  64. }
  65. }
  66. cout << res-1;
  67. return 0;
  68. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/415829
推荐阅读
相关标签
  

闽ICP备14008679号