網路流 洛谷 4313 文理分科

2022-06-12 23:39:15 字數 790 閱讀 5872

顯然是網路流,答案為正邊權和減去最小割

但怎麼建圖,首先源點與匯點分別連自身文理滿意值

考慮文理都必須拆點,文科先和源點連一條邊,再與相鄰連inf

理科先和匯點連一條邊,再與相鄰連inf

這樣文科理科二者不可得兼,最大流=最小割,那麼就可以用網路流求

#include #include #include #define ide(i,j) ((i-1)*m+j)

#define rr register

using namespace std;

const int dx[5]=,dy[5]=;

struct nodee[550011]; const int inf=707406378;

int dis[30011],ls[30011],n,m,k=1,ans,s,t;

inline signed iut()

inline void add(int x,int y,int w); ls[x]=k;

e[++k]=(node); ls[y]=k;

}inline signed bfs(int s)

}return 0;

}inline signed dfs(int x,int now)

if (!rest) dis[x]=0;

return rest;

}signed main()

while (bfs(s)) ans-=dfs(s,inf);

return !printf("%d",ans);

}

P4313 文理分科

遇到這種利益衝突的最終利益最大化問題 考慮轉化為最小割,使得損失的價值最小 相當於文科是s,理科是t,選出最小割就是確定損失代價最小的方案 然後就把s向每個點連一條cap art i j 的邊,每個點向t連一條cap science i j 的邊,再新建n m個點表示同選文科的利益,然後s向每個新建...

P4313 文理分科 最小割

有n m n mn m個人,第 i,j i,j i,j 選擇文科就可以獲得art i,jart arti,j 的價值,選擇理科就可以獲得sci i,jsci scii,j 的價值。如果乙個選擇文科的人周圍都選擇了文科,那麼就可以多獲得sam e ar ti,j same art same a rti...

P4313 文理分科 最小割

在說這道題之前,讓我們先思考一下最小割的性質.最小割就是使得s到t不同割掉的最小邊的容量,割過之後,所有的點要麼與s聯通,要麼與t聯通.這樣的性質,即要麼與s有關係,要麼與t有關係的性質 非黑即白 就是典型的最小割的題目.而這道題就顯然,乙個人要麼選文,要麼選理,沒其他的選擇了.所以我們鎖定最小割....