方格取数(2)
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 3923 Accepted Submission(s): 1227
Problem Description 给你一个m*n的格子的棋盘,每个格子里面有一个非负数。
从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取数所在的2个格子不能相邻,并且取出的数的和最大。
Input 包括多个测试实例,每个测试实例包括2整数m,n和m*n个非负数(m<=50,n<=50)
Output 对于每个测试实例,输出可能取得的最大的和
Sample Input
3 3
75 15 21
75 15 28
34 70 5
Sample Output
188
解题思路; 根据奇偶建图,加源点汇点,假如(i+j)是奇数,从源点向这个点连边,否则从这个点向汇点连边,对于每一个奇数点,向四周偶数点连边。
代码:
/* ***********************************************
Author :xianxingwuguan
Created Time :2014-1-23 18:24:41
File Name :\acm\代码\1.cpp
************************************************ */
#pragma comment(linker, "/STACK:102400000,102400000")
#include
#include
#include
#include
#include
#include
#include
#include