#SDNU1619. The Super Guo
The Super Guo
Cannot parse: 10000 MS error parsing time
Description
“2020 SDNU-ACM 新生月赛”现已开始。
在师哥/师姐的重重把关下,比赛中所有可能出现的锅均已被消灭。
但秉持着“没有锅的比赛不是好比赛”的观念,锅精决定来造访一下。
在锅精的世界里比赛是一张的地图。锅精每到一个地方便会丢下若干口锅,俗称“甩锅”(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
3 2
1 0
1 0
0 1
4
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; }