蒟蒻求助:本机编译正常,洛谷编译失败
查看原帖
蒟蒻求助:本机编译正常,洛谷编译失败
421773
unsigned_char楼主2021/7/13 22:48

本机Windows 7     Dev_C++ with GCC4.9.2\mathit{Windows\ 7}\ \ \ \ \ \texttt{Dev\_C++}\ with\ \mathbb{GCC4.9.2}

代码:

#include<iostream>
#include<queue>

using std::cin;
using std::cout;
using std::queue;

class Cord
{
	public:
		int x;
		int y;
		int time;
};

int time[310][310];
queue<Cord> q;

int BFS()
{
	Cord tmp,next;
	tmp.x=1;
	tmp.y=1;
	tmp.time=0;
	time[1][1]=-1;
	for(int i=0;i<310;++i)
	{
		time[0][i]=-3;
		time[i][0]=-3;
	}
	q.push(tmp);
	while(!q.empty())
	{
		tmp=q.front();
		q.pop();
		if(time[tmp.x+1][tmp.y]==-2||time[tmp.x-1][tmp.y]==-2||time[tmp.x][tmp.y+1]==-2||time[tmp.x][tmp.y-1]==-2)
		{
			return tmp.time+1;
		}
		if(tmp.time+1<time[tmp.x+1][tmp.y])
		{
			next.x=tmp.x+1;
			next.y=tmp.y;
			next.time=tmp.time+1;
			time[tmp.x+1][tmp.y]=-1;
			q.push(next);
		}
		if(tmp.time+1<time[tmp.x-1][tmp.y])
		{
			next.x=tmp.x-1;
			next.y=tmp.y;
			next.time=tmp.time+1;
			time[tmp.x-1][tmp.y]=-1;
			q.push(next);
		}
		if(tmp.time+1<time[tmp.x][tmp.y+1])
		{
			next.x=tmp.x;
			next.y=tmp.y+1;
			next.time=tmp.time+1;
			time[tmp.x][tmp.y+1]=-1;
			q.push(next);
		}
		if(tmp.time+1<time[tmp.x][tmp.y-1])
		{
			next.x=tmp.x;
			next.y=tmp.y-1;
			next.time=tmp.time+1;
			time[tmp.x][tmp.y-1]=-1;
			q.push(next);
		}
	}
	return -1;
}

int main()
{
	int m,t,x,y;
	for(int i=0;i<310;++i)
	{
		for(int j=0;j<310;++j)
		{
			time[i][j]=-2;
		}
	}
	cin>>m;
	for(int i=0;i<m;++i)
	{
		cin>>x>>y>>t;
		x+=1;y+=1;
		if(time[x][y]<0||time[x][y]>t) time[x][y]=t;
		if(time[x+1][y]<0||time[x+1][y]>t) time[x+1][y]=t;
		if(time[x-1][y]<0||time[x-1][y]>t) time[x-1][y]=t;
		if(time[x][y+1]<0||time[x][y+1]>t) time[x][y+1]=t;
		if(time[x][y-1]<0||time[x][y-1]>t) time[x][y-1]=t;
	}
	cout<<BFS();
	return 0;
}

Windows\mathit{Windows}Linux\mathit{Linux}区别造成的吗?或者是GCC\mathbb{GCC}版本区别吗?

2021/7/13 22:48
加载中...