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