題目鏈結(洛谷 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的有向邊。求網路最大流,如果最大流量等於所有單位人...