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 |
Re:STL求解In Reply To:STL求解 Posted by:zhengmoa at 2011-12-05 13:58:07 > # include <iostream> > # include <string.h> > # include <queue> > # define maxn 305 > using namespace std; > > typedef struct node > { > int x,y,step; > }; > > int mark[maxn][maxn]; > int n; > node s,e; > int dr[][2]={{1,2},{2,1},{2,-1},{1,-2},{-1,2},{-2,1},{-2,-1},{-1,-2}}; > int bfs() > { > queue<node>q; > node t; > int i; > if (s.x==e.x &&s.y==e.y)return 0; > q.push(s); > memset(mark,0,sizeof(mark)); > mark[s.x][s.y]=1; > while (!q.empty()) > { > s=q.front(); > q.pop(); > for (i=0;i<=7;i++) > { > t.x=s.x+dr[i][0]; > t.y=s.y+dr[i][1]; > if (t.x<0 ||t.x>=n ||t.y<0 ||t.y>=n)continue; > if (mark[t.x][t.y]==1)continue; > if (t.x==e.x && t.y==e.y)return t.step+1; > t.step=s.step+1; > q.push(t); > mark[t.x][t.y]=1; > } > > } > return -1; > } > > int main() > { > int cas,dis; > cin>>cas; > while (cas--) > { > cin>>s.x>>s.y; > cin>>e.x>>e.y; > s.step=0; > dis=bfs(); > cout<<dis<<endl; > } > return 0; > } > STL 的哪里有问题啊,感觉和下面的一模一样啊 > > # include <iostream> > # include <string.h> > # define maxn 305 > using namespace std; > > typedef struct node > { > int x,y,step; > }; > > int dr[][2]={{1,2},{2,1},{2,-1},{1,-2},{-1,2},{-2,1},{-2,-1},{-1,-2}}; > node s,e; > int mark[maxn][maxn],n; > node queue[maxn*maxn]; > int bfs() > { > int front,rear,i; > node t; > front=rear=0; > queue[rear++]=s; > memset(mark,0,sizeof(mark)); > while (front<rear) > { > s=queue[front++]; > if (s.x==e.x && s.y==e.y)return s.step; > for (i=0;i<=7;i++) > { > t.x=s.x+dr[i][0]; > t.y=s.y+dr[i][1]; > if (t.x<0 || t.x>=n || t.y<0 || t.y>=n )continue; > if (mark[t.x][t.y]==1)continue; > t.step=s.step+1; > queue[rear++]=t; > mark[t.x][t.y]=1; > } > } > return -1; > } > int main() > { > int cas,dis; > cin>>cas; > while (cas--) > { > cin>>n; > cin>>s.x>>s.y; > cin>>e.x>>e.y; > s.step=0; > dis=bfs(); > cout<<dis<<endl; > } > return 0; > } > > 你看好你return的是什么。。 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator