COGS746 網路流24題 騎士共存

2022-05-13 16:09:25 字數 1558 閱讀 8209

騎士共存問題

«問題描述:

在乙個n*n個方格的西洋棋棋盤上,馬(騎士)可以攻擊的棋盤方格如圖所示。棋盤

上某些方格設定了障礙,騎士不得進入。

«程式設計任務:

對於給定的n*n個方格的西洋棋棋盤和障礙標誌,計算棋盤上最多可以放置多少個騎

士,使得它們彼此互不攻擊。

«資料輸入:

由檔案knight.in給出輸入資料。第一行有2 個正整數n 和m (1<=n<=200, 0<=m<=n*n)

分別表示棋盤的大小和障礙數。接下來的m 行給出障礙的位置。每行2 個正整數,表示障

礙的方格座標。

«結果輸出:

將計算出的共存騎士數輸出到檔案knight.out。

輸入檔案示例 輸出檔案示例

knight.in

3 21 1

3 3knight.out

二分圖最大獨立集,轉化為二分圖最大匹配,從而用最大流解決。

1 #include2 #include3 #include4 #include5 #include6 #include7

using

namespace

std;

8const

int mx[9]=;

9const

int my[9]=;

10const

int mxn=42000;11

intread()

14while(ch>='

0' && ch<='9')

15return x*f;16}

17struct edgee[mxn<<4

];18

int hd[mxn],mct=1;19

void add_edge(int u,int v,int

f)22

intn,m;

23int

s,t;

24int

d[mxn];

25int id[210][210

];26

int mp[210][210

];27

bool bfs(int s,int

t)40}41

}42return

d[t];43}

44int dfs(int u,int

lim)57}

58 d[u]=0;59

return

f;60

}61 inline int

dinic()

66void

solve()84}

85else89}

90return;91

}92intmain()

93102 s=0;t=n*n+1

;103

solve();

104105

int ans=dinic();

106 ans=n*n-m-ans;

107 printf("

%d\n

",ans);

108return0;

109 }

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張餐桌,每張餐桌可...

COGS439 網路流24題 軟體補丁

對於乙個軟體公司來說,在發行乙個新軟體之後,可以說已經完成了工作。但是實際上,許多軟體公司在發行乙個新產品之後,還經常傳送補丁程式,修改原產品中的錯誤 當然,有些補丁是要收費的 如某微硬公司就是這樣的乙個軟體公司。今年夏天,在發行了乙個新的字處理軟體之後,到現在他們已經編寫了許多補丁程式。僅僅在這個...