題鏈:
題解:
顯然是個dag
建圖和有向圖最小路徑覆蓋的建圖有些相似。
都是拆點為 u u'分別表示出點和入點。
也都要保證每個點最多有乙個出度和乙個入度。
但因為帶權,要求最小花費,切要滿足每個點都去一次,既要滿足流量,所以採用最小費用最大流。
s -> u :(1,0) 因為每個點都會到達,所以都可以有乙個出度(可以從改點流出乙個流量)。
s -> u':(1,a[u]) 傳送到達 u點,提供乙個入度方式
u -> v':(1,w) u的出度對應 v的入度
u'-> t :(1,0) 流向匯點,表示改點到達過。
**:
#include#include#include#include#define maxn 2000#define maxm 50000
#define inf 0x3f3f3f3f3f3f3f3f
#define ll long long
using namespace std;
struct edge
void adde(ll u,ll v,ll w,ll c)
ll next(ll i,bool type)
}e;bool vis[maxn];
ll cur[maxn],dis[maxn];
ll n,m,s,t;
ll idx(ll i,ll k)
bool spfa()
} return dis[s]v) swap(u,v);
e.adde(idx(u,0),idx(v,1),1,w);//u的出度對應 v的入度。
} for(ll i=1;i<=n;i++)
ll cost=dinic();
printf("%lld",cost);
return 0;
}
bzoj1927 Sdoi2010 星際競速
傳送門 思路 拆點拆成x和x s向x 連邊,容量為1,費用為定位時間 s向x連邊,容量為1,費用為0 對於原圖的邊u v u向v 連邊,容量為1,費用為時間 x 向t連邊,容量為1,費用為0 跑一遍費用流即可 include include include includeconst int maxn...
bzoj1927 Sdoi2010 星際競速
description 10 年一度的銀河系賽車大賽又要開始了。作為全銀河最盛大的活動之一,奪得這個專案的冠軍無疑是很多人的夢想,來自傑森座 星的悠悠也是其中之一。賽車大賽的賽場由 n 顆行星和m條雙向星際航路構成,其中每顆行星都有 乙個不同的引力值。大賽要求車手們從一顆與這 n 顆行星之間沒有任何...
SDOI2010 bzoj1927 星際競速
描述 10 年一度的銀河系賽車大賽又要開始了。作為全銀河最盛大的活動之一,奪得這個專案的冠軍無疑是很多人的夢想,來自傑森座 星的悠悠也是其中之一。賽車大賽的賽場由 n 顆行星和m條雙向星際航路構成,其中每顆行星都有乙個不同的引力值。大賽要求車手們從一顆與這 n 顆行星之間沒有任何航路的天體出發,訪問...