记录编号 574996 评测结果 AAAAAAAAAA
题目名称 [USACO Mar12] 拖拉机 最终得分 100
用户昵称 GravatarJasonW6 是否通过 通过
代码语言 C++ 运行时间 0.296 s
提交时间 2022-08-31 18:53:06 内存使用 13.44 MiB
显示代码纯文本
    #include<iostream>
    #include<cmath>
    using namespace std;
    int n,x,y,xt,yt;
    int a[1005][1005],b[1005][1005];
    int main(){
        freopen("tractor.in","r",stdin);
        freopen("tractor.out","w",stdout);
        cin>>n>>xt>>yt;
        a[xt][yt]=50005; 
        b[xt][yt]=50005; 
        for(int i=0;i<n;i++){
            cin>>x>>y;
            a[x][y]=50010;
            b[x][y]=50010;
        }
        for(int i=0;i<1003;i++){
            if(a[0][i]==50010) a[0][i]++;
            if(a[i][0]==50010) a[i][0]++;
        }
        for(int i=1;i<1003;i++){
            for(int j=1;j<1003;j++){
                if(a[i][j]==50010) a[i][j]=min(a[i-1][j],a[i][j-1])+1;
                else a[i][j]=min(a[i-1][j],a[i][j-1]);
            }
        }
        for(int i=1002;i>=0;i--){
            for(int j=1002;j>=0;j--){
                if(b[i][j]==50010) b[i][j]=min(b[i+1][j],b[i][j+1])+1;
                else b[i][j]=min(b[i+1][j],b[i][j+1]);
            }
        }
        for(int i=1;i<1003;i++){
            for(int j=1;j<1003;j++){
                a[i][j]=min(a[i][j],b[i][j]);
            }
        }
        cout<<a[xt][yt];
    //    for(int i=0;i<10;i++){
    //        for(int j=0;j<10;j++){
    //            cout<<a[i][j]<<' ';
    //        }
    //        cout<<endl;
    //    }
        return 0;
    }