bzoj 2502 清理雪道 最小流

2022-04-30 08:09:06 字數 1215 閱讀 8588

time limit: 10 sec  memory limit: 128 mb

submit: 868  solved: 466

[submit][status][discuss]

滑雪場坐落在fj省西北部的若干座山上。

從空中鳥瞰,滑雪場可以看作乙個有向無環圖,每條弧代表乙個斜坡(即雪道),弧的方向代表斜坡下降的方向。

你的團隊負責每週定時清理雪道。你們擁有一架直公升飛機,每次飛行可以從總部帶乙個人降落到滑雪場的某個地點,然後再飛回總部。從降落的地點出發,這個人可以順著斜坡向下滑行,並清理他所經過的雪道。

由於每次飛行的耗費是固定的,為了最小化耗費,你想知道如何用最少的飛行次數才能完成清理雪道的任務。

lyd:

類似 《有源匯上下界可行流》 的構圖方法,但是不新增t到s的邊,求一次超級源到超級匯的最大流。

加邊(t,s,0,+∞),在上一步殘量網路基礎上再求一次超級源到超級匯的最大流。

流經t到s的邊的流量就是最小流的值。

該演算法的思想是在第一步中盡可能填充迴圈流,以減小最小流的代價。

#include#include#include#include#include#define inf 0x3f3f3f3f

#define n 155

#define m 400005

using namespace std;

int head[n],ver[m],nxt[m],f[m],tot,ch[n];

void add(int a,int b,int c)

queueq;int s,t;

bool tell()}}

return ch[t]!=-1;

}int zeng(int a,int b)

}if(!r)ch[a]=-1;

return r;

}int dinic()

int n;

int ru[n],chu[n];

int main()

}for(int i=1;i<=n;i++)

s=n+3,t=n+4;

for(int i=1;i<=n;i++)

else add(s,i,ru[i]-chu[i]);

}dinic();

add(tt,ss,inf);

dinic();

printf("%d\n",f[tot]);

return 0;

}

bzoj2502 清理雪道 最小流

time limit 10 sec memory limit 128 mb submit status discuss 滑雪場坐落在 fj省西北部的若干座山上。從空中鳥瞰,滑雪場可以看作乙個有向無環圖,每條弧代表乙個斜坡 即雪道 弧的方向代表斜坡下降的方向。你的團隊負責每週定時清理雪道。你們擁有一架...

bzoj 2502 清理雪道

time limit 10 sec memory limit 128 mb submit 510 solved 276 submit status discuss 滑雪場坐落在 fj省西北部的若干座山上。從空中鳥瞰,滑雪場可以看作乙個有向無環圖,每條弧代表乙個斜坡 即雪道 弧的方向代表斜坡下降的方向...

上下界網路流 bzoj2502 清理雪道

模型 無源匯有上下界可行流ljn 模板題吧 滑雪場坐落在fj省西北部的若干座山上。從空中鳥瞰,滑雪場可以看作乙個有向無環圖,每條弧代表乙個斜坡 即雪道 弧的方向代表斜坡下降的方向。你的團隊負責每週定時清理雪道。你們擁有一架直公升飛機,每次飛行可以從總部帶乙個人降落到滑雪場的某個地點,然後再飛回總部。...