不能这么定义吗
查看原帖
不能这么定义吗
523553
cxzhyf楼主2023/5/25 20:40

不知道为什么,一直报错,蒟蒻也不知道哪里有语法错误,请大佬指点

上代码:

#include<bits/stdc++.h>
using namespace std;
int n,sx,sy,st,ans[306][306],mp[306][306],b[306][306],dx[5]={0,0,0,1,-1},dy[5]={0,1,-1,0,0};
int pd(int x){
	if(x==-1) return 888;
	else return x;
}
int main()
{
	int i,j;
	cin>>n;
	for(i=0;i<300;i++)
		for(j=0;j<300;j++) mp[i][j]=-1;
	for(i=1;i<=n;i++){
		cin>>sx>>sy>>st;
		for(j=0;j<5;j++)
			if(sx+dx[j]>=0&&sy+dy[j]>=0&&(mp[sx+dx[j]][sy+dy[j]]==-1||mp[sx+dx[j]][sy+dy[j]]>st)) mp[sx+dx[j]][sy+dy[j]]=st;
	}
	queue<int> q[2];
	b[0][0]=1;
	q[0].push(0);
	q[1].push(0);
	while(!q[0].empty()){
		int x=q[0].front(),y=q[1].front();
		q[0].pop();
		q[1].pop();
		int s=ans[x][y]+1;
		if(mp[x][y]==-1){
			cout<<s-1;
			return 0;
		}
	}
	for(i=1;i<=4;i++){
		int xx=x+dx[i],yy=y+dy[i];
		if(xx>=0&&yy>=0&&s<pd(mp[xx][yy])&&b[xx][yy]==0){
			q[0].push(xx);
			q[1].push(yy);
			b[xx][yy]=1;
			ans[xx][yy]=s;
		}
	}
	cout<<-1;
	return 0;
}
2023/5/25 20:40
加载中...