luogu
型別:網路最大流
建模分析:
首先,我們要拆人,卻不能拆房間和菜,因為給我們的關係是人與房間和人與菜的關係,我們只能用人當做中間橋梁聯絡房間與菜。
那麼思路就很清晰明了了。
源點向每個房間連一條容量為1的邊
喜歡的房間向人的入點連一條容量為1的邊
人的入點向出點連一條容量為1的邊
人的出點向喜歡的菜連一條容量為1的邊
菜向匯點連一條容量為1的邊
跑網路最大流即可
吐槽:居然是個紫題
#include
#include
#include
#include
#define il inline
using
namespace
std;
const
int inf=0x7fffffff;
const
int maxm=110000;
int head[maxm],to[maxm*2],cap[maxm*2],net[maxm*2],deep[maxm],cnt=1;
il void add(int x,int y,int c)
queue
dl;
int st[maxm],go[maxm];
il bool bfs(int s,int t)
return deep[t]==-1?0:1;
}int dfs(int now,int flow,int t)
}if(!used) deep[now]=-1;
return used;
}il int dinic(int s,int t)
inline
void adx(int x,int y,int cax)
il int read()
while(ch>='0'&&ch<='9')
x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return x*w;
}int main()
for(int i=1;i<=n;i++)
for(int j=1,s;j<=q;j++)
printf("%d\n",dinic(s,t));
return
0;}
luogu P1402 酒店之王
酒店之王 先大致講一下題意 題目給定p道菜,q個房間和n個客人。每個客人滿意的條件當且僅當那個客人分配到的房間和菜都是自己喜歡的。想都不想直接網路流,裸題。但是因為沒看清題意一開始瘋狂30分 模型 這樣子只要跑一邊網路流求出最大流就行了。感覺沒有紫題難度 include using namespac...
luoguP1402 酒店之王(網路流)
xx酒店的老闆想成為酒店之王,本著這種希望,第一步要將酒店變得人性化。由於很多來住店的旅客有自己喜好的房間色調 陽光等,也有自己所愛的菜,但是該酒店只有p間房間,一天只有固定的q道不同的菜。有一天來了n個客人,每個客人說出了自己喜歡哪些房間,喜歡哪道菜。但是很不幸,可能做不到讓所有顧客滿意 滿意的條...
luoguP1402 酒店之王(網路流)
xx酒店的老闆想成為酒店之王,本著這種希望,第一步要將酒店變得人性化。由於很多來住店的旅客有自己喜好的房間色調 陽光等,也有自己所愛的菜,但是該酒店只有p間房間,一天只有固定的q道不同的菜。有一天來了n個客人,每個客人說出了自己喜歡哪些房間,喜歡哪道菜。但是很不幸,可能做不到讓所有顧客滿意 滿意的條...