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 |
Output Limit Exceed 半天了,郁闷了,请指教#include "stdio.h" #include "memory.h" const int M = 10000; class queue { public: int x[M]; int y[M]; int head,tail; queue(){head=0;tail=0;} void inqueue(int tx,int ty) { x[tail]=tx; y[tail]=ty; tail++; } void dequeue(int &tx,int &ty) { tx=x[head]; ty=y[head]; head++; } }q; char a[90][110]; bool used[90][110]; int rel ,m ; int w,h; void solve(int tx, int ty) { int x, y; m = 0 ; q.head = 0 ; q.tail = 0 ; q.inqueue( tx, ty); m ++ ; used[tx][ty] = 1; while(1) { if( q.tail > q.head ) q.dequeue( x, y); else { rel = rel > m ? rel : m ; break; } if( x >= 0 && x < h && y >=0 && y < w ) { if( x-1 >= 0 && x-1 < h && y >=0 && y< w &&a[x-1][y] == '*'&& used[x-1][y]==0) { q.inqueue( x - 1, y); m ++ ; used[x-1][y] = 1; } if(x+1 >= 0 && x+1 < h && y >=0 && y < w && a[x+1][y] == '*'&& used[x+1][y]==0) { q.inqueue( x+1, y ); m ++ ; used[x+1][y] = 1; } if( x >= 0 && x < h && y-1 >=0 && y-1 < w && a[x][y-1] == '*'&& used[x][y-1]==0) { q.inqueue( x , y - 1); m ++ ; used[x][y-1] = 1; } if( x >= 0 && x < h && y+1 >=0 && y +1< w && a[x][y+1] == '*'&& used[x][y+1]==0) { q.inqueue( x , y + 1); m ++ ; used[x][y+1] = 1; } } } } int main() { while( scanf( "%d%d", &w,&h) != EOF ) { int i,j; for( i = 0 ; i < h ; i ++ ) { scanf( "%s", a[i]); memset( used[i] , 0 , 110 * sizeof(bool)); } rel = 0 ; for( i = 0 ; i < h ; i ++ ) for( j = 0 ; j < w ; j ++) { if( a[i][j] == '*' && used[i][j] == 0 ) solve(i,j); } printf( "%d\n", rel); } return 0; } /* 10 5 ..*.....** .**..***** .*........ ..****.*** ..****.*** 10 5 .......... .......... .......... .......... .......... 10 5 ********** ********** ********** ********** ********** 10 5 *.*.*.*.*. .*.*.*.*.* *.*.*.*.*. .*.*.*.*.* *.*.*.*.*. */ Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator