COGS 0014 網路流24題 搭配飛行員

2022-02-27 07:24:59 字數 2398 閱讀 5959

先貼題面

★★☆   輸入檔案:flyer.in輸出檔案:flyer.out簡單對比

時間限制:1 s   記憶體限制:128 mb

【問題描述】

飛行大隊有若干個來自各地的駕駛員,專門駕駛一種型號的飛機,這種飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些駕駛員不能在同一架飛機上飛行,問如何搭配駕駛員才能使出航的飛機最多。

如圖,假設有10個駕駛員,如圖中的v1,v2,…,v10就代表達10個駕駛員,其中v1,v2,v3,v4,v5是正駕駛員,v6,v7,v8,v9,v10是副駕駛員。如果乙個正駕駛員和乙個副駕駛員可以同機飛行,就在代表他們兩個之間連一條線,兩個人不能同機飛行,就不連。例如v1和v7可以同機飛行,而v1和v8就不行。請搭配飛行員,使出航的飛機最多。注意:因為駕駛工作分工嚴格,兩個正駕駛員或兩個副駕駛員都不能同機飛行.

【輸入格式】

輸入檔案有若干行

第一行,兩個整數n與n1,表示共有n個飛行員(2<=n<=100),其中有n1名飛行員是正駕駛員.

下面有若干行,每行有2個數字a,b。表示正駕駛員a和副駕駛員b可以同機飛行。

注:正駕駛員的編號在前,即正駕駛員的編號小於副駕駛員的編號.

【輸出格式】

輸出檔案有一行

第一行,1個整數,表示最大起飛的飛機數。

【輸入輸出樣例】

輸入檔名: flyer.in

10 5 

1 7 

2 6 

2 10 

3 7 

4 8 

5 9 

輸出檔名:flyer.out

4

講真確實是水題w簡單的二分圖最大匹配,可以轉化為網路流來做.

首先建立超級源點$s$和$t$(編號$0$和$v+1$),從超級源點向所有正飛行員連一條容量為1的邊,然後對於所有可能的匹配連一條從正飛行員到副飛行員的邊,最後將所有副飛行員連線到超級匯點再跑一遍最大流就得了...

過於蒟蒻的我居然腦抽一開始覺得超級源點和超級匯點要連容量為inf的邊...

好了**時間

github

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7

8const

int maxe=10010;9

const

int maxv=110;10

const

int inf=0x7fffffff;11

12struct

edge;

19edge e[maxe];

20 edge*head[maxv];

21 edge* top=e;

2223

intv,n;

24int

depth[maxv];

2526

bool bfs(int,int

);27

int dinic(int,int

);28

int dfs(int,int,int

);29

void insert(int,int,int

);30

31int

main()

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

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

45 printf("

%d\n

",dinic(0,v+1

));46

return0;

47}4849

int dinic(int s,int

t)54

return

ans;55}

5657 inline void insert(int a,int b,int

f)73

74bool bfs(int s,int

t)89}90

}91return

false;92

}9394int dfs(int root,int flow,int

t)106 i->flow-=k;

107 i->rev->flow+=k;

108 tmp-=k;

109if(tmp==0

)110

break

;111

}112

}113

return flow-tmp;

114 }

backup

以及圖包w 

COGS461 網路流24題 餐巾

問題描述 乙個餐廳在相繼的n天裡,第i天需要ri塊餐巾 i l,2,n 餐廳可以從三種途徑獲得餐巾。1 購買新的餐巾,每塊需p分 2 把用過的餐巾送到快洗部,洗一塊需m天,費用需f分 f 3 把餐巾送到慢洗部,洗一塊需n天 n m 費用需s分 s在每天結束時,餐廳必須決定多少塊用過的餐巾送到快洗部,...

Cogs 729 網路流24題 圓桌聚餐

網路流24題 圓桌聚餐 輸入檔案 roundtable.in 輸出檔案 roundtable.out 評測外掛程式 時間限制 1 s 記憶體限制 128 mb 問題描述 假設有來自m 個不同單位的代表參加一次國際會議。每個單位的代表數分別為 ri i 1,2,3 m 會議餐廳共有n張餐桌,每張餐桌可...

COGS746 網路流24題 騎士共存

騎士共存問題 問題描述 在乙個n n個方格的西洋棋棋盤上,馬 騎士 可以攻擊的棋盤方格如圖所示。棋盤 上某些方格設定了障礙,騎士不得進入。程式設計任務 對於給定的n n個方格的西洋棋棋盤和障礙標誌,計算棋盤上最多可以放置多少個騎 士,使得它們彼此互不攻擊。資料輸入 由檔案knight.in給出輸入資...