題目傳送門
水。。解法:
沒有公共邊也就是格仔不相鄰。
那麼把整個圖黑白染色。
相鄰的顏色不一樣。
那麼就最小割唄。
把所有點個成兩個集合。乙個黑色點的集合,乙個白色點的集合。
黑色點都沒有公共邊白色點也沒有公共點。
好水的最小割做完前面的題發現這道才是最水的。
**實現:
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
struct node a[21000];int len,last[1100];
void ins(int x,int y,int c)
intlist[1100],head,tail,st,ed,h[1100];
bool bt_h()
}head++;
}if(h[ed]==0)return
false;return
true;
}int findflow(int x,int f)
int n,d[51][51],dx[5]=,dy[5]=;
bool pd(int x,int y)
int pt(int x,int y) const
int inf=999999999;
int main() else ins(pt(i,j),ed,x);
}int ans=0;while(bt_h()==true)ans+=findflow(st,inf);printf("%d\n",sum-ans);
return
0;}
BZOJ 1475 方格取數 最小割
在乙個n n的方格裡,每個格仔裡都有乙個正整數。從中取出若干數,使得任意兩個取出的數所在格仔沒有公共邊,且取出的數的總和盡量大。建圖比較巧妙。將方格看成01奇偶矩陣,黑白染色。將s與所有黑點連邊,權為黑點的權值,將所有白點與t連邊,權為白點的權值,相鄰格仔之間從黑點到白點連邊,權為inf。答案就是總...
bzoj1475 方格取數 網路流最小割
題目描述 在乙個n n的方格裡,每個格仔裡都有乙個正整數。從中取出若干數,使得任意兩個取出的數所在格仔沒有公共邊,且取出的數的總和盡量大。輸入第一行乙個數n n 30 接下來n行每行n個數描述乙個方陣 輸出僅乙個數,即最大和 樣例輸入 21 2 3 5樣例輸出6題解 網路流最小割 將原圖黑白染色,分...
bzoj 1475 方格取數
在乙個n n的方格裡,每個格仔裡都有乙個正整數。從中取出若干數,使得任意兩個取出的數所在格仔沒有公共邊,且取出的數的總和盡量大。第一行乙個數n n 30 接下來n行每行n個數描述乙個方陣 僅乙個數,即最大和 21 2 3 56 同1324 exca王者之劍。最大流。都一樣。n m的矩形變成n n i...