WA麻了,不知道哪里错了
查看原帖
WA麻了,不知道哪里错了
72921
jor蛋楼主2021/11/22 23:47
#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef pair<int,int> PII;
int dist[100][100];
PII last[100][100];
int n,m,mm;
char g[100][100];
inline bool bfs(int sx,int sy){
    queue<pair<int,int>> q;
    q.push({sx,sy});
    mm++;
    dist[sx][sy]=mm;
    while(q.size()){
        auto t = q.front(); q.pop();
        int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
        for(int i=0;i<4;i++){
            int x=dx[i]+t.x,y=dy[i]+t.y;
            if(!dist[x][y]&&g[x][y]==g[t.x][t.y]){
                dist[x][y]=mm;
                last[x][y]={t.x,t.y};
                q.push({x,y});
            }else if(dist[x][y]==dist[t.x][t.y]&&last[t.x][t.y].x!=x&&last[t.x][t.y].y!=y)
                return true;
        }
    }
    return false;
}
int main(){
    cin>>n>>m;
    bool stt=false;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            cin>>g[i][j];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(!dist[i][j])
                if(bfs(i,j))
                    stt=true;
    if(stt) puts("Yes");
    else puts("No");
}
2021/11/22 23:47
加载中...