MLE求助
查看原帖
MLE求助
443675
紊莫turtle楼主2023/2/11 19:34

不知道其他有没有错,但是这样写的人不少罢,可能是我哪里傻了,遂求调。

//Author: Velvet on Luogu(uid=443675)
#include <bits/stdc++.h>
#define mkpr make_pair
#define fi first
#define se second
#define F(i,a,b) for(int i=(a);i<=(b);i++)
#define dF(i,a,b) for(int i=(a);i>=(b);i--)
using namespace std;
using namespace __gnu_cxx;
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;}
inline void write(int x){if (x < 0) x = ~x + 1, putchar('-');if (x > 9) write(x / 10);putchar(x % 10 + '0');}
inline void writeln(int x){write(x);putchar('\n');}
inline void writesp(int x){write(x);putchar(' ');}
inline int lowbit(int x) {return x&(-x);}
typedef pair<int,int> Pair;
const int N=3005,dx[]={0,0,0,1,-1},dy[]={0,1,-1,0,0};
int n,m,k,h[N][N],vis[N][N],c[N][N],usd=1;
bool check(int x,int y){
	return x>=1&&x<=n&&y>=1&&y<=m&&h[x][y]!=0;
}
struct node{int x,y,s;};
queue<node> Q;
void bfs(){
	Q.push({1,1,0});
	while(Q.size()){
		int x=Q.front().x,y=Q.front().y,s=Q.front().s;
		Q.pop();if(x==n&&y==m){
			cout<<s;exit(0);
		}vis[x][y]=1;
		F(i,1,4){
			int nx=x+dx[i],ny=y+dy[i];
			if(check(nx,ny)&&!vis[nx][ny])
				Q.push({nx,ny,s+1});
		}
		if(c[x][y]&&usd){
			F(i,1,n) F(j,1,m){
				if(!c[i][j]||i==x&&j==y) continue ;
				if(check(i,j)&&!vis[i][j])
					Q.push({i,j,s+1+(h[i][j]!=h[x][y])});
			}usd=0;
		}
	}
}
int main(){
	ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    cin>>n>>m>>k;
	F(i,1,n) F(j,1,m) cin>>h[i][j];
	F(i,1,k){
		int x,y;cin>>x>>y;
		c[x][y]=1;
	}
	bfs();cout<<(-1);
    return 0;
}
2023/2/11 19:34
加载中...