假設有來自m 個不同單位的代表參加一次國際會議。每個單位的代表數分別為ri
(i=1
,2,…
…,m)
r i(
i=1,
2,……
,m)。
會議餐廳共有n 張餐桌,每張餐桌可容納ci
(i=1
,2,…
…,n)
c i(
i=1,
2,……
,n
)個代表就餐。
為了使代表們充分交流,希望從同乙個單位來的代表不在同乙個餐桌就餐。試設計乙個演算法,給出滿足要求的代表就餐方案。
對於給定的代表數和餐桌數以及餐桌容量,程式設計計算滿足要求的代表就餐方案。
輸入格式:第1
行有2個
正整數m
和n,m
表示單位
數,n表
示餐桌數
,1<=
m<=
150,
1<=
n<=
270。
第 1行
有2個正
整數m和
n,m表
示單位數
,n表示
餐桌數,
1<=
m<=
150,
1<=
n<=
270。
第2行有m個
正整數,
分別表示
每個單位
的代表數
。 第2行
有m個正
整數,分
別表示每
個單位的
代表數。
第3行有n個
正整數,
分別表示
每個餐桌
的容量。
第 3行
有n個正
整數,分
別表示每
個餐桌的
容量
。輸出格式:如果
問題有解
,第1行
輸出1,
否則輸出
0。接下
來的m行
給出每個
單位代表
的就餐桌
號。如果
有多個滿
足要求的
方案,只
要輸出1
個方案。
如 果問
題有解,
第1行輸
出1,否
則輸出0
。接下來
的m行給
出每個單
位代表的
就餐桌號
。如果有
多個滿足
要求的方
案,只要
輸出1個
方案
。輸入樣例#1:
4 5
4 5 3 5
3 5 2 6 4
輸出樣例#1:
1 1 2 4 5
1 2 3 4 5
2 4 5
1 2 3 4 5
題解:每個單位的人與每乙個桌子都建立乙個容量為
0 0
的邊,每單位與原點建立容量為單位人數的邊,每個桌子都與匯點建立容量為桌子人數的邊,最後檢視邊被減為
0' role="presentation">0
0的,既代表有人坐。
#include
#include
#include
#include
#define inf 0x3f3f3f3f3f3f3f3f
#define ll long long
#define maxn 30000
using
namespace
std;
int n;//點數、邊數
int x[maxn],y[maxn];
int sp,tp;//原點、匯點
struct node
mp[maxn*10];
int pre[maxn],dis[maxn],cur[maxn];//cur為當前弧優化,dis儲存分層圖中每個點的層數(即到原點的最短距離),pre建鄰接表
int cnt=0;
void init()//不要忘記初始化
void add(int u,int v,int w)//加邊
bool bfs()//建分層圖}}
return dis[tp]!=-1;
}ll dfs(int u,ll cap)//尋找增廣路
}if(!res)
dis[u]=-1;
return res;
}ll dinic()
return ans;
}int main()
for (int i = 1; i <=b ; ++i)
for (int i = 1; i <=a ; ++i)
add(0,i,x[i]);
}for (int j = 1; j <=b ; ++j)
n=a+b+1;
sp=0;tp=a+b+1;
int k=dinic();
// printf("%d\n",k);
if(k==sum) printf("1\n");
else
for (int i = 1; i <=a; ++i)
printf("\n");
}return
0;}
P3254 圓桌問題
網路流建模,同時求出最大流的乙個可行流 建模如下 求可行流的方法 遍歷左邊的所有節點,在殘留網路上跑滿了流的邊即為一組解 include using namespace std const int n 430,m n 150 270 2,inf 1e8 int n,m,s,t int h n e m...
P3254 圓桌問題
題目鏈結 非常簡單的一道網路流題 我們發現每個單位的人要坐到不同餐桌上,那也就是說每張餐桌上不能有同一單位的人。這樣的話,我們對於每個單位向每張餐桌連一條邊權為1的邊,表示同一餐桌不得有相同單位的人。從源點向每個單位連一條邊權為人數的邊,從餐桌向匯點連一條邊權為餐桌容量的邊,這樣的話跑最大流,跑出來...
P3254 圓桌問題
題解 源點向單位建容量為單位人數的邊,桌子向匯點建容量為桌子最多容納多少人的邊,單位向所有桌子連容量為1的邊,跑最大流。如果最大流等於單位總人數則有解,輸出滿流邊即為方案。1 include2 using namespace std 3const int n 450,m 150 270 n 2,in...