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

2022-06-29 16:15:07 字數 1181 閱讀 5852

題目鏈結(洛谷 p3254)

有來自\(m\)個不同單位的代表參加一次國際會議。第\(i\)個單位派出了\(r_i\)個代表。

會議的餐廳共有\(n\)張餐桌,第\(i\)張餐桌可容納\(c_i\)個代表就餐。

為了使代表們充分交流,希望從同乙個單位來的代表不在同乙個餐桌就餐。請給出乙個滿足要求的代表就餐方案。

我們考慮從源點向每個單位連線一條容量為該單位人數的邊,從每個桌子向匯點連線一條容量為該桌子人數的邊,然後每個單位向每個桌子都連線一條容量為\(1\)的邊(因為每張桌子上每個單位最多只能有乙個人),然後跑最大流。如果最大流和總人數相同,則有解,否則無解。

ps:dinic寫的太慢(dfs)會被卡qaq

/**

* luogu p3254

* dinic

**/#include #include #include #include using namespace std;

const int maxn = 1000;

const int s = 0;

const int t = maxn - 1;

const int inf = 0x5f5f5f5f;

struct edge e[maxn * maxn];

int numedge, head[maxn], n, m, depth[maxn], ans, sum;

inline void addedge(int from, int to, int val)

inline void init()

inline bool bfs() }}

return depth[t] != 0;

}int dfs(int u, int flow) }}

if (!sum) depth[u] = 0;

return sum;

}inline int dinic()

return res;

}int main()

for (int i = 1; i <= m; i++)

for (int i = 1; i <= n; i++)

}ans = dinic();

if (ans == sum)

}putchar('\n');}}

else

return 0;

}

網路流24題5 圓桌問題

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

網路流24題之T5 圓桌問題

問題描述 假設有來自 n 個不同單位的代表參加一次國際會議。每個單位的代表數分別 nir 2,1,會議餐廳共有 m張餐桌,每張餐桌可容納 2,1 mic 個代表就餐。i i為了使代表們充分交流,希望從同乙個單位來的代表不在同乙個餐桌就餐。試設計乙個演算法 給出滿足要求的代表就餐方案。程式設計任務 對...

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

建立二分圖,每個單位為x集合中的頂點,每個餐桌為y集合中的頂點,增設附加源s和匯t。1 從s向每個xi頂點連線一條容量為該單位人數的有向邊。2 從每個yi頂點向t連線一條容量為該餐桌容量的有向邊。3 x集合中每個頂點向y集合中每個頂點連線一條容量為1的有向邊。求網路最大流,如果最大流量等於所有單位人...