社区讨论
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 条回复,欢迎继续交流。
正在加载回复...