| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
有没有哪位大神可以帮我看一下为什么超时......#include<stdio.h>
#include<queue>
#include<memory.h>
using namespace std;
typedef struct
{
int i,j,t;
}P;
int main()
{
int shortest=-1;
int board[301][301];
bool visited[301][301];
memset(visited,0,sizeof(visited));
memset(board,-1,sizeof(board));
queue<P> q;
int M;
scanf("%d",&M);
int i,j,t;
for(int ti=0;ti<M;ti++)
{
scanf("%d%d%d",&j,&i,&t);
if(board[i][j]==-1)
board[i][j]=t;
if(i>0)
if(board[i-1][j]==-1)
board[i-1][j]=t;
if(i<300)
if(board[i+1][j]==-1)
board[i+1][j]=t;
if(j>0)
if(board[i][j-1]==-1)
board[i][j-1]=t;
if(j<300)
if(board[i][j+1]==-1)
board[i][j+1]=t;
}
P tp,tp2;
tp.i=tp.j=tp.t=0;
visited[0][0]=1;
q.push(tp);
while(!q.empty())
{
tp=q.front();
q.pop();
if(board[tp.i][tp.j]==-1)
{
shortest=tp.t;
break;
}
else
{
if(tp.i>0&&(board[tp.i-1][tp.j]-1>tp.t||board[tp.i-11][tp.j]==-1)&&!visited[tp.i-1][tp.j])
{
tp2.i=tp.i-1;
tp2.j=tp.j;
tp2.t=tp.t+1;
q.push(tp2);
visited[tp.i-1][tp.j]=1;
}
if(tp.j>0&&(board[tp.i][tp.j-1]-1>tp.t||board[tp.i][tp.j-1]==-1)&&!visited[tp.i][tp.j-1])
{
tp2.i=tp.i;
tp2.j=tp.j-1;
tp2.t=tp.t+1;
q.push(tp2);
visited[tp.i][tp.j-1]=1;
}
if(tp.i<300&&(board[tp.i+1][tp.j]-1>tp.t||board[tp.i+1][tp.j]==-1)&&!visited[tp.i+1][tp.j])
{
tp2.i=tp.i+1;
tp2.j=tp.j;
tp2.t=tp.t+1;
q.push(tp2);
visited[tp.i+1][tp.j]=1;
}
if(tp.j<300&&(board[tp.i][tp.j+1]-1>tp.t||board[tp.i][tp.j+1]==-1)&&!visited[tp.i][tp.j+1])
{
tp2.i=tp.i;
tp2.j=tp.j+1;
tp2.t=tp.t+1;
q.push(tp2);
visited[tp.i][tp.j+1]=1;
}
}
}
if(shortest==-1)
printf("%d\n",-1);
else
{
printf("%d\n",shortest);
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator