網路流24題 13 方格取數問題

2021-08-19 13:32:12 字數 976 閱讀 4084

這道題與上一道騎士共存問題非常的類似,首先也是黑白染色得到一張二分圖,s向黑連邊,白向t連邊,流量均為點權,然後黑點與會起衝突的白點連邊,那麼如果有一條從s-黑-白-t的路徑,證明有衝突,我們以割掉這條邊(黑點與s的連邊,白點與t連邊)表示拿走這個點,希望剩下的權值最大,所以模型轉換為最小割。求個最大流就好了。「`

#include

#include

#include

#include

#include

#define ll long long

#define inf (2139062143)

#define n (105)

using

namespace

std;

int n,m,tot,s,t,all,x,ans,sum;

int a[n*n<<3],nxt[n*n<<3],f[n*n<<3],head[n*n],co[n*n],h[n*n],cur[n*n];

template

void read(t&t)

do while (isdigit(p));

if (!fl) t=-t;

}inline

void add(int x,int y,int z)

int dfs(int u,int maxflow)

}cur[u]=head[u];

if (!--co[h[u]]) h[s]=all;

h[u]++;

co[h[u]]++;

return used;

}int main()

if (j>1)

if (i0);

}if (j1,inf);

add(now+1,now,0);}}

else}}

while (h[s]printf("%d",sum-ans);

return

0;}

網路流24題09方格取數問題

在乙個有 m n 個方格的棋盤中,每個方格中有乙個正整數。現要從方格中取數,使任意 2 個數所在方格沒有公共邊,且取出的數的總和最大。試設計乙個滿足要求的取數演算法。對於給定的方格棋盤,按照取數要求程式設計找出總和最大的數。第 1 行有 2 個正整數 m 和 n,分別表示棋盤的行數和列數。接下來的 ...

網路流24題 09 方格取數問題

問題描述 在乙個有m n 個方格的棋盤中,每個方格中有乙個正整數。現要從方格中取數,使任 意2 個數所在方格沒有公共邊,且取出的數的總和最大。試設計乙個滿足要求的取數演算法。程式設計任務 對於給定的方格棋盤,按照取數要求程式設計找出總和最大的數。資料輸入 由檔案grid.in提供輸入資料。檔案第1 ...

24題 方格取數問題 網路流

在乙個有 n m n times m n m 個方格的棋盤中,每個方格中有乙個正整數。現要從方格中取數,使任意 2 個數所在方格沒有公共邊,且取出的數的總和最大。這道題明顯是乙個二分圖。我們可以把每個點染色,將i j i ji j為偶數的點連向t tt,否則連向s ss。那麼對於每乙個連s ss的白...