hdu3572,網路流,dinic演算法實現

2021-06-21 14:52:07 字數 1172 閱讀 9507

題意是xmm有m臺機器,要完成n個任務,每個任務同一時間內只能在一台機器上進行,每台機器同一時間內只能執行乙個任務。對於每個任務,耗時pi,要求在si~ei之間完成,乙個任務可以分成多個時間段完成。這題構好圖,dinic可ac,網上很多是用isap過的,可惜這種演算法我現在還不會。

ps:這道題其實半年前就看到過了,當時在搞圖論,搞到網路流,當時只學了ek演算法,結果被這道題卡住。。。網上搜到題解,全是isap,結果看不懂gap優化,一道題花了十多天沒搞定。結果從那時起,就沒怎麼弄圖論了,轉去學習其他東西。直到今天,終於把這道題ac了,實在感動。唉,感覺也是那時不太努力,現在更要抓緊了。

不多說,上**

#include#include#include#include#define inf 200000000

int n,m,p[505],s[505],e[505],first[1555],next[500005],idx,ad[1555],queue[100005],visit[1555],lever[1555],me,flow[1555][1555];

struct edge

en[500005];

int max(int a,int b)

int min(int a,int b)

void add(int x,int y,int f)

int bfs()

lever[0]=0;

visit[0]=1;

begin=0;end=1;

queue[0]=0;

while(begin!=end)}}

if(lever[n+me+1]==inf)

return 0;

else

return 1;

}int dfs(int s)

if(ad[s]==0)

break;}}

if(z==0)

return z;

}int main()

}for(i=1;i<=me;i++)

mf=0;

while(bfs())

if(mf==sum)

printf("case %d: yes\n\n",l);

else

printf("case %d: no\n\n",l);

}return 0;

}

HDU3549 網路流 模板

在此給出我的dinic和ek網路流模板,sap以及dinic的優化日後更新 以hdu3549為樣板給出我的模板 原題 如下 ek by acer.mo include include include include includeusing namespace std int n,m,i bool ...

hdu4280 網路流模版)

驗證了一下網路流的板子題 發現有乙個板子和kuangbin聚聚的板子效率相差不多可能還更高效 kuangbin聚聚寫的是非遞迴的 這個可能更容易敲一點 題目大意就是輸入n,m 找到s t 直接連圖求最大流 附鏈結 include include include include includeusin...

hdu3572 任務分配 最大流判斷滿流

題意 將n個任務分配為m個機器,給每個任務需要的天數 無需每天連續 和可以在哪些天去做該任務,求是否存在方案。典型的任務 x 天 y 二分最大流,因為這裡任務是與天的關係 處理器控制流量,源點向x部點,指需要的天數,任務xi,向可以做的天連,流量1,每個y部點向匯點連流量為m,表示該天最多用m個機器...