求助图论题
  • 板块灌水区
  • 楼主fangzichang
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/7/6 20:50
  • 上次更新2023/10/27 21:41:25
查看原帖
求助图论题
678087
fangzichang楼主2022/7/6 20:50

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

2022/7/6 20:50
加载中...