線性規劃與網路流24題 05圓桌問題

2021-05-28 15:30:52 字數 907 閱讀 1711

建立二分圖,每個單位為x集合中的頂點,每個餐桌為y集合中的頂點,增設附加源s和匯t。

1、從s向每個xi頂點連線一條容量為該單位人數的有向邊。

2、從每個yi頂點向t連線一條容量為該餐桌容量的有向邊。

3、x集合中每個頂點向y集合中每個頂點連線一條容量為1的有向邊。

求網路最大流,如果最大流量等於所有單位人數之和,則存在解,否則無解。對於每個單位,從x集合對應點出發的所有滿流邊指向的y集合的頂點就是該單位人員的安排情況(乙個可行解)。

這個題是多解也就是求出來的只是乙個可行解。。。。所以測資料可能有的會錯。。。。簡單題。。。

#include#include#includeusing namespace std;

#define inf 1<<30

#define n 100000

#define cc(m,v) memset(m,v,sizeof(m))

struct nodeedge[n];

int head[1000],p,lev[1000],cur[1000];

int que[n];

void ainit()

bool bfs(int s,int t)

}return 0;

}int dinic(int s,int t)}}

return flow;

}void addedge(int u,int v,int f)

int main()

for(i=m+1;i=1+m;j--)

addedge(i,j,1);

if(sum<=sum1 && dinic(s,t)==sum)

}else

printf("0\n");

}return 0;

}

網路流24題5 圓桌問題

假設有來自 n 個不同單位的代表參加一次國際會議。每個單位的代表數分別為ri 會議餐廳共有 m 張餐桌,每張餐桌可容納ci 個代表就餐。為了使代表們充分交流,希望從同乙個單位來的代表不在同乙個餐桌就餐。試設計乙個演算法,給出滿足要求的代表就餐方案。對於給定的代表數和餐桌數以及餐桌容量,程式設計計算滿...

網路流24題 05 圓桌聚餐(最大流判滿流)

題目大意 有m個不同單位的代表人來參加會議,每個單位的人數是確定的,會議餐廳有n張桌子,每個桌子能容納的人數也是確定的,現在希望來自乙個單位的人不在同乙個桌子上就餐,求出滿足要求的就餐方案,並輸出方案 思路分析 設立乙個源點,連向每乙個單位,流量為每個單位來參加會議的人數 從每個單位向每個桌子連一條...

網路流24題 5 圓桌問題 題解

題目鏈結 洛谷 p3254 有來自 m 個不同單位的代表參加一次國際會議。第 i 個單位派出了 r i 個代表。會議的餐廳共有 n 張餐桌,第 i 張餐桌可容納 c i 個代表就餐。為了使代表們充分交流,希望從同乙個單位來的代表不在同乙個餐桌就餐。請給出乙個滿足要求的代表就餐方案。我們考慮從源點向每...