社区讨论

40分,其余全部TLE、求调

P1551亲戚参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mm4dof2m
此快照首次捕获于
2026/02/27 12:14
2 周前
此快照最后确认于
2026/02/28 21:40
2 周前
查看原帖
CPP
#include<bits/stdc++.h>
#define pII pair<int,int>
using namespace std;
char a[310][310];
int vis[310][310];
int dx[4]={-1,0,0,1};
int dy[4]={0,-1,1,0};
struct node{
	int x,y,s;
};
queue<node> q;
vector<pII> v[27];
int main(){
	int n,m,sx,sy;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
			if(a[i][j]>='A'&&a[i][j]<='Z'){
				v[a[i][j]-'A'+1].push_back({i,j});
			}
			if(a[i][j]=='@'){
				sx=i;
				sy=j;
			}
		}	
	}
	q.push({sx,sy,0});
	vis[sx][sy]=1;
	while(!q.empty()){
		int x=q.front().x;
		int y=q.front().y;
		int s=q.front().s;
		//cout<<x<<" "<<y<<endl;
		q.pop();
		if(a[x][y]=='='){
			cout<<s;
			return 0;
		}
		for(int i=0;i<=3;i++){
			int xx=x+dx[i];
			int yy=y+dy[i];
			if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]!='#'&&vis[xx][yy]==0){
				//cout<<xx<<" "<<yy<<endl; 
				if(a[xx][yy]=='.'||a[xx][yy]=='='){
					q.push({xx,yy,s+1});
					vis[xx][yy]=1;
				}
				else{
					int htx1=v[a[xx][yy]-'A'+1][0].first;
					int hty1=v[a[xx][yy]-'A'+1][0].second;
					int htx2=v[a[xx][yy]-'A'+1][1].first;
					int hty2=v[a[xx][yy]-'A'+1][1].second;
					if(htx1==xx&&hty1==yy){
						q.push({htx2,hty2,s+1});
					}
					else{
						q.push({htx1,hty1,s+1});
					}
				}
			}
		}
	}
}
为什么会TLE6个点,只拿了四十分。大佬求条!!求求了!

回复

0 条回复,欢迎继续交流。

正在加载回复...