hdu 1569 方格取數2(網路流最小割)

2021-08-09 06:19:19 字數 1360 閱讀 2470

題目:

和第一部一樣,就是建圖建錯了,氣死我了。。。

給你乙個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

#include#include#include#include#include#include#define mem(a,x) memset(a,x,sizeof(a))

using namespace std;

const int inf = 0x3f3f3f3f;

const int maxn = 50 + 5;

const int maxs = maxn*maxn + 5;

int n,m,source,sink;

int mp[maxn][maxn];

struct edge;

struct dicnic;

edge e2 = ;

edges.push_back(e1);

edges.push_back(e2);

int m = edges.size();

g[from].push_back(m-2);

g[to].push_back(m-1);

}void init(int n)

edges.clear();

}bool bfs()}}

return vis[t];

}int dfs(int x ,int a)

}return flow;

}int maxflow(int s,int t)

return flow;

}}g;int drx = ;

int dry = ;

bool valid(int x,int y)

int id(int x,int y)

int main()

}else

sum+=mp[i][j];

}int ans = g.maxflow(source,sink);

printf("%d\n",sum-ans);

}return 0;

}

hdu 1569 方格取數 2 網路流

題意 給出乙個n m的矩陣,求選出若干個互不不相鄰 的數,使得和最大 分析 劉汝佳白書給出求帶權二分圖的最大獨立集解法。即每個節點有乙個權值,要求選出一些節點,互不相鄰,且權值最大 加入乙個源點s和乙個匯點t,使得s向其中乙個集合的點連一條邊,容量為該點的權值,另一部分的點向t連一條邊,容量為該點的...

hdu 1569 方格取數 2

題目大意 求在n m的棋盤中選出兩兩不相鄰的數,使得和最大。題目思路 按西洋棋黑白染色,源點到黑點容量為數字,黑點到它周圍的白點容量為無窮,白點到匯點容量為數字,最後答案為總值減去最小割 摘自網上 include include include include include include inc...

hdu 1569 方格取數 2

和上一題差不多,都是用最大流來做,可是有人能告訴我stl和直接用陣列,真的有那麼大區別嗎?stl超時,陣列0ms,這是什麼資料,有那麼叼嗎 附上兩份 希望過路的人能給我看看為什麼會超時 stl的 include include include include include include incl...