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

which problem?

Posted by TN at 2005-05-03 15:57:26
In Reply To:谁能帮我看看,开始直接dfs剪枝超时了,现在枚举下界在bfs判断老是wa,不知道什么地方错了 Posted by:cpp051300448324 at 2005-05-03 15:49:47
> #include<iostream>
> #include<vector>
> #include<queue>
> #include<fstream>
> #include<algorithm>
> 
> using namespace std;
> #define max(a,b) (a>b?a:b)
> #define min(a,b) (a<b?a:b)
> vector<int> vec;
> queue<pair<int,int> > que;
> int dir[4][2]={{1,0},{0,-1},{0,1},{-1,0}};
> int h[200][200];
> int N;
> int limit;
> bool signal;
> 
> void search(bool s[200][200]){
>     if(que.empty())return ;
>     pair<int,int> pos=que.front();
>     que.pop();
>     if(pos.first==N-1&&pos.second==N-1){
>         signal=1;
>         while(!que.empty()){
>             que.pop();
>         }    
>         return;
>     }    
>     int x,y;
>     int i;
>     for(i=0;i<4;i++){
>         x=pos.first+dir[i][0];
>         y=pos.second+dir[i][1];
>         if(x>=0&&x<=N-1&&y>=0&&y<=N-1&&s[x][y]==0&&abs(h[x][y]-h[pos.first][pos.second])<=limit){
>             s[x][y]=1;
>             que.push(make_pair(x,y));
>         }
>     } 
>     search(s);
> }
> 
> int main(){
>      ifstream cin("tmp.txt");
>     cin>>N;
>     
>     int i,j;
>     for(i=0;i<N;i++){
>         for(j=0;j<N;j++){
>             cin>>h[i][j];
>         }
>     }
>     int min_n=0;
>     for(i=0;i<N;i++){
>         for(j=0;j<N;j++){
>             if(i<N-1){
>                 vec.push_back(abs(h[i][j]-h[i+1][j]));
>             }
>             if(j<N-1){
>                 vec.push_back(abs(h[i][j]-h[i][j+1]));
>             }
>         }
>     }
>     sort(vec.begin(),vec.end());
>     unique(vec.begin(),vec.end());
>     for(i=0;i<vec.size();i++){
>         bool s[200][200]={0};
>         signal=0;
>         limit=vec[i];
>         que.push(make_pair(0,0));
>         search(s);
>         if(signal)break;
>     }
>     cout<<vec[i]<<endl;
>     system("pause");
>     return 0;
> }    
>                     
>             
>                
>     

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