#SDNU1618. The Guo
The Guo
Description
“2020 SDNU-ACM 新生月赛”现已开始。
在师哥/师姐的重重把关下,比赛中所有可能出现的锅均已被消灭。
但秉持着“没有锅的比赛不是好比赛”的观念,锅精决定来造访一下。
在锅精的世界里比赛是一张n m的地图。锅精每到一个地方便会丢下若干口锅,俗称“甩锅”(bushi.
锅精离开之后,地图上每个点有着大大小小的锅。 身为社会主义优秀青年的你自然不会容忍锅的存在,于是自告奋勇来修锅。
每次修锅,你可以选择一个含有锅的位置出发,沿着含有锅的相邻格子(相邻指上下左右相邻)走下去;之后你可以将所有走过的位置上所有的锅消灭,花费为此次消灭掉锅的数量。由于你体力有限,每修锅之后,都需要休息一次。
可锅精早已预料到这一切,他给所有的锅下了锅咒,每当你休息一次,每个没有锅的位置上会增加一口锅!
现在你需要安排一个修锅顺序使得总的花费最小。
Format
Input
第一行输入两个整数 n,m
接下来输入n行,每行m个整数表示锅精离开后地图每个点上锅的数量,记g[i][j]表示第i行第j列锅的数量。
$1\leq n,m,n\times m\leq 10^7,0\leq g[i][j]\leq 10^7$
Output
输出一个整数表示最小花费
Samples
2 2
0 1
1 0
5
1 3
1 1 1
3
3 2
1 0
1 0
0 1
7
Hints
由于输入数据量比较大,推荐使用以下方式读入
int read()
{
int f = 1, x = 0;
char ch = getchar();
while(!isdigit(ch))
{
if(ch == '-') f = -1;
ch = getchar();
}
while(isdigit(ch))
{
x = x * 10 + ch - '0';
ch = getchar();
}
return x * f;
}
int main()
{
int n = read(), m = read();
......
return 0;
}