Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:救命啊!!!!!!!!!!

Posted by tanyin at 2009-04-22 16:49:35 on Problem 1088
In Reply To:Re:救命啊!!!!!!!!!! Posted by:LiWang112358 at 2008-11-12 19:57:14
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int r,c,t,map[100][100],map1[100][100];
int D[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int rear,stack[100][2],stacknext[100][2];
int step,contnow,contnext;
int bfs(int x,int y){
  map1[x][y]=1;
  stack[0][0]=x;
  stack[0][1]=y;
  contnow=1;
  step=0;
  while(contnow!=0){
     step++;
     rear=0;  
     contnext=0;
     for(int i=0;i<contnow;i++)
       for(int j=0;j<4;j++){
         int xx=stack[i][0]+D[j][0],yy=stack[i][1]+D[j][1];
         if(xx>=0&&xx<r&&yy>=0&&yy<c
         &&map[xx][yy]<map[stack[i][0]][stack[i][1]]){
            stacknext[rear][0]=xx;
            stacknext[rear++][1]=yy;
            map1[xx][yy]=1;
            contnext++;
         } 
       }
     contnow=contnext;
     for(int i=0;i<contnow;i++){
       stack[i][0]=stacknext[i][0];
       stack[i][1]=stacknext[i][1];
     }
  }
  return step;
}
int main(){
   
   while(scanf("%d%d",&r,&c)!= EOF){
      int max=0;
      memset(map1,0,sizeof(map1));
      for(int i=0;i<r;i++)
         for(int j=0;j<c;j++)
           scanf("%d",&map[i][j]);
      for(int i=0;i<r;i++)
        for(int j=0;j<c;j++)
           if(map1[i][j]!=1){
               t=bfs(i,j);
           if(t>max) max=t;
          }
      printf("%d\n",max);
   }
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator