有源匯有上下界的最小可行流。
yy一下建圖應該很好搞吧(?
就是對於每個雪道都是[1,inf]然後源點到所有點都是[0,inf]所有點到匯點都是[0,inf]
這樣的話跑乙個有源匯上下界最小可行流就可以了
有關於這個可以看liu_runda神犇的介紹 非常直觀易懂
最開始先建超級源匯 跑可行流得到乙個基礎流量 然後反向在殘餘網路上跑最大流減去即可
注意最後的時候是需要反向在殘餘網路上跑的 不要忘記交換源匯
**。
//view codelove and freedom.
#include#include
#include
#include
#include
#define inf 20021225
#define ll long long
#define n 200
#define m 40000
using
namespace
std;
struct edgee[m<<1
];int cnt=1,in
[n],dep[n],s,t,ss,tt;
queue
q;void add(int x,int y,int
f)bool
bfs()
}return0;
}int dfs(int x,int
f) }
dep[x] = -1; return f-flow;
}int
dinic()
intmost[m],f[n],n;
void del(int
x)int
main()
}for(int x=1;x<=n;x++)
for(int i=1;i<=n;i++)
add(t,s,inf);
int tmps = s,tmpt =t;
s = ss; t = tt; int flow =dinic();
flow = e[cnt].f; e[cnt].f = e[cnt-1].f = 0
; del(ss); del(tt); s = tmpt,t =tmps;
printf(
"%d\n
",flow-dinic());
return0;
}
洛谷P4843 清理雪道
滑雪場坐落在fj省西北部的若干座山上。從空中鳥瞰,滑雪場可以看作乙個有向無環圖,每條弧代表乙個斜坡 即雪道 弧的方向代表斜坡下降的方向。你的團隊負責每週定時清理雪道。你們擁有一架直公升飛機,每次飛行可以從總部帶乙個人降落到滑雪場的某個地點,然後再飛回總部。從降落的地點出發,這個人可以順著斜坡向下滑行...
洛谷 P4843 清理雪道 有上下界最小流
題目描述 滑雪場坐落在fj省西北部的若干座山上。從空中鳥瞰,滑雪場可以看作乙個有向無環圖,每條弧代表乙個斜坡 即雪道 弧的方向代表斜坡下降的方向。你的團隊負責每週定時清理雪道。你們擁有一架直公升飛機,每次飛行可以從總部帶乙個人降落到滑雪場的某個地點,然後再飛回總部。從降落的地點出發,這個人可以順著斜...
洛谷P4843 清理雪道 有上下界最小流
時空限制 1000ms 128mb 題目描述 滑雪場坐落在fj省西北部的若干座山上。從空中鳥瞰,滑雪場可以看作乙個有向無環圖,每條弧代表乙個斜坡 即雪道 弧的方向代表斜坡下降的方向。你的團隊負責每週定時清理雪道。你們擁有一架直公升飛機,每次飛行可以從總部帶乙個人降落到滑雪場的某個地點,然後再飛回總部...