rt,链接acwing链接
#include<bits/stdc++.h>
//#pragma GCC optimize(2)
#define LL long long
using namespace std;
const int N=1e3+10;
int n,m,b[N][N],cnt,sum=0,len=0;
char c[N][N];
bool vis[N*N];
struct Node{
vector<int> nxt;
int x;
}a[N*N];
void dfs(int now){
// cout<<now<<" ";
// len++;
vis[now]=1;
for(int i=0;i<a[now].nxt.size();i++){
if(sum==11451411){
return;
}
if(vis[a[now].nxt[i]]){
sum=11451411;
//有环
return;
}
if(!vis[a[now].nxt[i]]){
vis[a[now].nxt[i]]=1;
len++;
// cout<<len<<" ";
dfs(a[now].nxt[i]);
len--;
vis[a[now].nxt[i]]=0;
}
}
sum=max(sum,len);
}
int main(){
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>c[i];
for(int j=0;j<m;j++){
if(c[i][j]=='Q') b[i][j+1]=1;
else if(c[i][j]=='W') b[i][j+1]=2;
else if(c[i][j]=='E') b[i][j+1]=3;
else if(c[i][j]=='R') b[i][j+1]=4;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cnt++;
a[cnt].x=b[i][j];
if(b[i][j]+1==b[i][j+1]||((b[i][j]-3==b[i][j+1])&&b[i][j]==4)){
// cout<<i<<" "<<j<<"to"<<i<<" "<<j+1<<endl;
a[cnt].nxt.push_back(cnt+1);
}
if((b[i][j]+1==b[i+1][j])||((b[i][j]-3==b[i+1][j])&&b[i][j]==4)){
// cout<<i<<" "<<j<<"to"<<i+1<<" "<<j<<endl;
a[cnt].nxt.push_back(cnt+m);
}
if((b[i][j]+1==b[i-1][j])||((b[i][j]-3==b[i-1][j])&&b[i][j]==4)){
// cout<<i<<" "<<j<<"to"<<i-1<<" "<<j<<endl;
a[cnt].nxt.push_back(cnt-m);
}
if(b[i][j]+1==b[i][j-1]||((b[i][j]-3==b[i][j-1])&&b[i][j]==4)){
// cout<<i<<" "<<j<<"to"<<i<<" "<<j-1<<endl;
a[cnt].nxt.push_back(cnt-1);
}
}
}
//思路是建图后dfs
/*
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<b[i][j]<<" ";
}
cout<<endl;
}
*/
for(int i=1;i<=n*n;i++){
if(a[i].x==1){
len=1;
memset(vis,0,sizeof(vis));
dfs(i);
if(sum==11451411){
cout<<"infinity"<<endl;
return 0;
}
}
}
if(sum<4){
cout<<"none"<<endl;
return 0;
}
cout<<sum/4<<endl;
return 0;
}
错误数据
14 34
QQQQQQQQQQQQWERQQQQQQQQQQQQQQQWERQ
QQQQQQWERQQQQQQQQQQQQQQQQQQQQQWERQ
QQQQQQQQQQQQQWQQQQQQQQQQQWQWEWQWER
QQQQQQWEQQQQQQQQQQQQQWQQQQQQQQQQQQ
QQQQQQQQQQQQQQQQQERQQQQQQQQQQQQQEQ
QQQQQQWEWQQQQQQQQQQQQWEWQWEWQQQWQQ
QQQQQQQQQQQQQQQQQEWEQQQQWEQQWERQWE
QQQQQQQQQQQRQWERQWQQQQQQWQWERQRQQQ
QQQQQQQQWQQQQQQQQQQQQQQQQERQWEQQRE
QEQQQQQQQQQQQQWERQWEQQQQQERQQQEWQW
QQQQQQQQWEQQQQQQQQQQWQWERQWQQQQERQ
QQQWQQQQQQQQQQEWQWERQRQRQWERQWERRQ
QQQRQQQQQQQQQWEWERQWQQEQEREWQEQQQE
QWQWQQQQQQWWRREERWEWQRQRRREQWQQQWQ
样例输出
infinity
我的输出
1
环在这里
QQQQQQQQQQQQWERQQQQQQQQQQQQQQQWERQ QQQQQQWERQQQQQQQQQQQQQQQQQQQQQWERQ QQQQQQQQQQQQQWQQQQQQQQQQQWQWEWQWER QQQQQQWEQQQQQQQQQQQQQWQQQQQQQQQQQQ QQQQQQQQQQQQQQQQQERQQQQQQQQQQQQQEQ QQQQQQWEWQQQQQQQQQQQQWEWQWEWQQQWQQ QQQQQQQQQQQQQQQQQEWEQQQQWEQQWERQWE QQQQQQQQQQQRQWERQWQQQQQQWQWERQRQQQ QQQQQQQQWQQQQQQQQQQQQQQQQERQWEQQRE QEQQQQQQQQQQQQWERQWEQQQQQERQQQEWQW QQQQQQQQWEQQQQQQQQQQWQWERQWQQQQERQ QQQWQQQQQQQQQQEWQWERQRQRQWERQWERRQ QQQRQQQQQQQQQWEWERQWQQEQEREWQEQQQE QWQWQQQQQQWWRREERWEWQRQRRREQWQQQWQ
不求调,但是问题可能出在哪里orz