將某個人的行程視為二分圖中的乙個節點,用結構體記錄每個節點的資訊(起點時間,終點時間,位置),然後對於每個節點,看它結束後能否提前趕到其他節點,能的話就加邊。
然後就用二分圖匹配,算出最小邊覆蓋就可以了。
為什麼是最小邊覆蓋,因為乙個計程車走一條邊,囊括所有節點的最少的邊數就是我們要求的最少計程車數。
記得空間要開兩倍,我開小了給wa了。
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
const
int maxn =
505;
vector <
int> g[
2* maxn]
;int match[
2* maxn]
;bool used[
2* maxn]
;int m;
struct node
a[maxn]
;bool
dfs(
int u)
}return
false;}
inthungary()
}return ans;
}int
main()
for(
int i =
1; i <= m; i++
)for
(int i =
1; i <= m; i++)}
}printf
("%d\n"
, m -
hungary()
);}return0;
}
樹上最小邊覆蓋問題
1077.皇宮看守 對於一條邊,可以由父節點覆蓋,或者子節點覆蓋,f u 0 表示該節點不放士兵,f u 1 表示該節點放士兵.當該節點不放時,只有由所有子節點放的情況轉移 當該節點放時,可以由子節點放或不放的情況轉移而來 includeusing namespace std const int n...
HDU 6311 尤拉路 最小邊覆蓋
原題 題意 對於乙個圖 不一定聯通 最少需要多少筆 路徑 能覆蓋所有的邊,還有輸出路徑。尤拉路,對於乙個聯通的圖,需要max 1,度數為奇數的點 2 筆就能畫完。這題,對於每個聯通塊,把度數為奇數的點,按 對 加邊,只留兩個點做起點和終點,應該是這樣理解 加的邊就是 虛 邊。補完圖後,跑乙個dfs,...
poj 3020 最小邊覆蓋與最大匹配 匈牙利演算法
做了一些題之後感覺自己的知識儲備真的太少了,很多東西都不知道 題目大意 乙個矩形中,有n個城市 現在這n個城市都要覆蓋無線,若放置乙個基站,那麼它至多可以覆蓋相鄰的兩個城市。問至少放置多少個基站才能使得所有的城市都覆蓋無線?解題思路 思前想後,依稀可以認為是一道求二分圖的最小路徑覆蓋問題 注意不是最...