社区讨论

求助!!

P2895[USACO08FEB] Meteor Shower S参与者 2已保存回复 4

讨论操作

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

当前回复
4 条
当前快照
1 份
快照标识符
@mhj0ssaq
此快照首次捕获于
2025/11/03 18:51
4 个月前
此快照最后确认于
2025/11/03 18:51
4 个月前
查看原帖
ber为什么同样的代码在本地运行没问题,输出也正确,到了洛谷就输出了0啊?
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=305;
int n;
int dx[5]={0,0,1,0,-1};
int dy[5]={0,1,0,-1,0};
int a[N][N];
int v[N][N];
int t[N][N];
queue<pair<int,int> > q;
void bfs(){
	q.push({0,0});
	v[0][0]=1;
	while(!q.empty()){
		int x=q.front().first;
		int y=q.front().second;
		q.pop();
		int s=t[x][y]+1;
		if(a[x][y]==-1){
			cout<<s-1;
			return ;
		}
		for(int i=1;i<5;i++){
			int xx=x+dx[i],yy=y+dy[i];
			if(v[xx][yy]!=0&&(a[xx][yy]==-1||s<a[xx][yy])&&xx>=0&&yy>=0){
				v[xx][yy]=1;
				t[xx][yy]=s;
				q.push({xx,yy});
			}
		}
	}
	cout<<-1;
	return ;
}
int main(){
	cin>>n;
	for(int i=0;i<=N;i++)
		for(int j=0;j<=N;j++)
			a[i][j]=-1;
	for(int i=1;i<=n;i++){
		int x,y,t;
		cin>>x>>y>>t;
		for(int j=0;j<5;j++){
			int xx=x+dx[j],yy=y+dy[j];
			if((a[xx][yy]==-1||a[xx][yy]>t)&&xx>=0&&yy>=0) a[xx][yy]=t;
		}
	}
	bfs();
	return 0;
}

回复

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

正在加载回复...