#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int n,startx,starty,finx,finy,f[][],a[],b[],c[],d[],v[],dis[][];
int main()
{
int i,j,k=;
scanf("%d%d%d%d%d",&n,&startx,&starty,&finx,&finy);
memset(dis,,sizeof(dis));
dis[startx][starty]=;
int l=n*n;
for(i=;i<=n;i++)
for(j=;j<=n;j++)
scanf("%d",&f[i][j]);
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
if(i==n)
{
if(j==n) break;
a[k]=i;
b[k]=j;
c[k]=i;
d[k]=j+;
v[k++]=f[i][j+];
}
else
{
if(j==n)
{
a[k]=i;
b[k]=j;
c[k]=i+;
d[k]=j;
v[k++]=f[i+][j];
continue;
}
else
{
a[k]=i;
b[k]=j;
c[k]=i;
d[k]=j+;
v[k++]=f[i][j+];
a[k]=i;
b[k]=j;
c[k]=i+;
d[k]=j;
v[k++]=f[i+][j];
continue;
}
}
}
}
k--;
for(i=k+;i<=k*;i++)
{
a[i]=c[i-k];
b[i]=d[i-k];
c[i]=a[i-k];
d[i]=b[i-k];
v[i]=f[c[i]][d[i]];
}
k*=;
//for(i=1;i<=k;i++) printf("%d %d %d %d %d\n",a[i],b[i],c[i],d[i],v[i]); printf("%d",k);
for(i=;i<l;i++)
{
int check=;
for(j=;j<=k;j++)
{
if(dis[c[j]][d[j]]>dis[a[j]][b[j]]+v[j])
{
dis[c[j]][d[j]]=dis[a[j]][b[j]]+v[j];
check=;
}
}
if(check==) break;
}
/*
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%d ",dis[i][j]);
printf("\n");
}
*/
printf("%d",dis[finx][finy]+f[startx][starty]);
return ;
}
HD200703排雷
难度级别:B;            运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B
试题描述
一片战场被划分为N行N列小区域,敌我双方各占据其中一个小区域。
根据侦察,敌人派出工兵潜入各区域(包括我方和敌方所在区域)布设了地雷。
现我方侦察兵已经掌握了各片区域的地雷数量。为偷袭敌人,需要寻找一条从我方区域通向敌方区域并且地雷总数最少的路径,执行偷袭任务时,此路净上的地雷都需要排除。
请你编一个名为MIN的程序,计算出偷袭路径最少需要排雷多少个。
说明:排雷总数包括我方和敌方所在区域的地雷数。偷袭路径是由一个个区域连接而成,每个区域只能通向上、下、左、右的4个相邻区域。
输入
输入第一行只有一个数N,表示每行每列区域个数。1<N<30。 第二行两个数表示我方区域所在的行和列。第三行两个数表示敌方区域所在的行和列。这四个数均为不超过N的正整数。 接下去的N行中,每行有N个数,表示整个战场的地雷分布。每个区域的地雷数均是小于10000的非负整数。
输出
输出中只有一个数,即最小排雷数。
输入示例
4 2 1 3 3 1 1 1 1 2 9 8 3 8 9 4 2 1 2 3 4
输出示例
15

为什么WA!!!

HD200703的更多相关文章

随机推荐

  1. Opencv Mat运算(转)

    一.矩阵Mat I,img,I1,I2,dst,A,B; double k,alpha; Scalar s; //注意Mat的行列号是从0开始的 //定义矩阵a,b,c Mat a,b,c; //生成 ...

  2. Halcon的数据类型

    两大类: 1.图形参数Iconic (image, region, XLD) 2.与控制参数Control (string, integer, real, handle), 在Halcon算子的参数中 ...

  3. Java知多少(29)覆盖和重载

    在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称.返回值类型.参数列表. 如果在新类中定义一个方法,其名称.返回值类型和参数列表正好与父类 ...

  4. Linux目录详细说明大全(推荐)

    Linux目录详细说明大全,方便你以后合理规划及管理 "/" : 根目录Linux文件系统的入口.也是最高级,最重要的的目录.除衍生出其它目录,还和系统的开机,还原,系统修复有的, ...

  5. adb shell dumpsys 命令

    Android开发中,常常可以用adb shell dumpsys这条命令来dump出系统运行时的状态信息,例如可以这样来察看某个应用的内存使用信息 adb shell dumpsys meminfo ...

  6. .net core 开发接口前端调用时提示错误 405

    解决方法: 在StartUp.cs文件中Configure(IApplicationBuilder app, IHostingEnvironment env)方法中添加如下代码: //跨域 app.U ...

  7. BackgroundWorker学习笔记

    1 简介 BackgroundWorker 类允许您在单独的专用线程上运行操作. 耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 似乎处于停止响应状态. 如果您需要能进行响 ...

  8. Html 助手

    /*! * Html 助手 * version: 1.0.0-2018.07.25 * Requires ES6 * Copyright (c) 2018 Tiac * http://www.cnbl ...

  9. python单引号(')、双引号(")、三引号(''',""")

    python对字符串的表示方法比c更有灵活性,但是也更难理解. 为了在平时使用.看代码过程中对着单引号(').双引号(").三引号(''',""")不混淆,知道 ...

  10. C - Yogurt factory

    The cows have purchased a yogurt factory that makes world-famous Yucky Yogurt. Over the next N (1 &l ...