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 <iostream> #include <cstdio> #include <cstring> #include <queue> using namespace std; const int M = 1015; int i,j,k; int Max (int x ,int y) { return x>y?x:y ; } struct p { int x; int y; int step; }; int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; char a[M][M]; int visit[M][M]; int n,m; int tmpx,tmpy; int tmp; void bfs(int x,int y) { memset(visit,0,sizeof(visit)); int i; p t; p s; t.x = x; t.y = y; t.step = 0; queue<p>q; q.push(t); visit[t.x][t.y] = 1; while(!q.empty()){ p w; w = q.front(); q.pop(); for(i=0;i<4;i++){ s.x = w.x + dir[i][0]; s.y = w.y + dir[i][1]; if(s.x>=0&&s.x<n&&s.y>=0&&s.y<m&&visit[s.x][s.y]==0&&a[s.x][s.y]!='#'){ s.step = w.step + 1; visit[s.x][s.y] = 1; if(s.step > tmp){ tmpx = s.x; tmpy = s.y; tmp = s.step; } q.push(s); } } } } int main () { int t; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); memset(a,0,sizeof(a)); int i; for(i=0;i<m;i++){ scanf("%s",a[i]); } int x,y; for(i=0;i<m;i++){ int f = 0; for(j=0;j<n;j++){ if(a[i][j] == '.') { x = i; y = j; f = 1; break ; } } if(f) break; } bfs(x,y); x = tmpx; y = tmpy; bfs(x,y); int ans = tmp; printf("Maximum rope length is %d.\n",ans); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator