0
点赞
收藏
分享

微信扫一扫

AcWing 1929. 镜子田地

泠之屋 2022-01-20 阅读 54

在这里插入图片描述

思路:环图,环图的度只有0,1,2,由简单环和链构成,遍历图最长路

代码:

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 10010;
int n,m;
char g[N][N];
int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
int dfs(int x,int y,int d){
    if(x<0||x>=n||y<0||y>=m) return 0;
    
    if(g[x][y]=='/') d^=1;
    else d^=3;
    
    return dfs(x+dx[d],y+dy[d],d)+1;
}
int main()
{
    scanf("%d%d", &n, &m);
    for(int i=0;i<n;i++) scanf("%s",g[i]);
    
    int res=0;
    for(int i=0;i<n;i++){
        res=max(res,dfs(i,0,1));
        res=max(res,dfs(i,m-1,3));
    }
    
    for(int i=0;i<m;i++){
        res=max(res,dfs(0,i,2));
        res=max(res,dfs(n-1,i,0));
    }
    
    printf("%d",res);
    return 0;
 


   
}
举报

相关推荐

0 条评论