求调,玄关
查看原帖
求调,玄关
796776
MAX_CURRY_JAMES楼主2025/7/21 08:41

题目传送门

#include<bits/stdc++.h>
//#pragma GCC optimize(2,"Ofast","inline")
using namespace std;
inline void read(int &x){
	bool neg=false;
	char ch=0;
	x=0;
	while(ch<'0'||ch>'9'){
		if(ch=='-') neg=true;
		ch=getchar();
	}
	if(neg)
	while(ch>='0'&&ch<='9') {
		x=x*10+('0'-ch);
		ch=getchar();
	}
	else
	while(ch>='0'&&ch<='9') {
		x=x*10+(ch-'0');
		ch=getchar();
	}
}
inline void write(int x){
	bool neg=false;
	if(x<0){
		neg=true;
		putchar('-');
	}
	static int sta[40];
	int top=0;
	do{
		sta[top++]=x%10,x/=10;
	}while(x);
	if(neg)
	while(top) putchar('0'-sta[--top]);
	else
	while(top) putchar('0'+sta[--top]);
}
int t,T,cnt;
int n,m,zx=0x3f3f3f3f;
char x;
int a[105][105];
int f[105][105];
int visx[6]={0,0,-1,0,1,0};
int visy[6]={0,0,0,1,0,-1};
void dfs(int x,int y,int sum,int fx){
	if(f[x][y]>0)
	{
		zx=min(zx,sum);
		return;
	}
	if(a[x][y]==1)
	{
		int nx=x+visx[fx],ny=y+visy[fx];
		if(nx>0&&nx<=n&&ny>0&&ny<=m)
		{
		f[x+visx[fx]][y+visy[fx]]++;
		dfs(x+visx[fx],y+visy[fx],sum,fx);
		f[x+visx[fx]][y+visy[fx]]--;
		}
		else return;
	}
	else{
		for(int i=2;i<=5;i++)
		{
			int nx=x+visx[i],ny=y+visy[i];
			if(a[x][y]==i)
			{
				if(nx>0&&nx<=n&&ny>0&&ny<=m)
				{
					f[nx][ny]++;
					dfs(nx,ny,sum,i);
					f[nx][ny]--;
				}
			}
			else
			{
				if(nx>0&&nx<=n&&ny>0&&ny<=m)
				{
					f[nx][ny]++;
					dfs(nx,ny,sum+1,i);
					f[nx][ny]--;
				}
			}
		}	
	}
	
}
signed main(){
	read(T);
	t=T;
	while(T--){
		read(n),read(m);
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++){
				cin>>x;
				if(x=='.') a[i][j]=1;
				if(x=='^') a[i][j]=2;
				if(x=='>') a[i][j]=3;
				if(x=='v') a[i][j]=4;
				if(x=='<') a[i][j]=5;
			}
		
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				if(a[i][j]!=1)
					dfs(i,j,0,a[i][j]);
				else cnt++;
			}
		}
		if(cnt==n*m) printf("Case #%d: 0\n",t-T);
		else if(zx==0x3f3f3f3f) printf("Case #%d: IMPOISSBLE\n",t-T);
		else printf("Case #%d: %d\n",t-T,zx);
		memset(a,0,sizeof(a));
		memset(f,0,sizeof(f));
		cnt=0,zx=0x3f3f3f3f;
	}
}

全WA

2025/7/21 08:41
加载中...