LOJ 115 無源匯有上下界可行流

2022-05-01 20:51:09 字數 1115 閱讀 2438

模板題

首先把下界去掉(連邊upper-lower

然後記錄每個點至少要流出的和流入的流量(下界

然後流入大於流出的連向tt,流出大於流入的連向ss(補流

然後跑最大流,如果sum=flow,就代表加上的邊滿流,有答案,否則沒有

#include #include #include #include #include #define int long long

using namespace std;

const int maxn = 20100;

const int inf = 0x3f3f3f3f;

struct edge;

vectorg[maxn];

vectoredges;

int n,m,d[maxn],sumx,lower[maxn],ss,tt,vis[maxn],dep[maxn],cur[maxn],id[50000];

void addedge(int u,int v,int cap));

edges.push_back((edge));

int cnt=edges.size();

g[u].push_back(cnt-2);

g[v].push_back(cnt-1);

}void addedge(int u,int v,int cap,int lower)

int dfs(int x,int a)

}return flow;

}queueq;

bool bfs(void)}}

return vis[tt];

}int dinic(void)

return flow;

}signed main()

ss=maxn-2;

tt=maxn-3;

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

else

}int max_flow=dinic();

// printf("sumx=%lld maxflow=%lld\n",sumx,max_flow);

if(sumx==max_flow)

else

return 0;

}

loj 115 無源匯有上下界可行流

參考部落格 模型 乙個網路,求出乙個流,使得每條邊的流量必須 li且 hi,每個點必須滿足總流入量 總流出量 流量守恆 這個流的特點是迴圈往復,無始無終 這個演算法是有上下界網路流演算法的基礎,只要深刻理解這個演算法其他演算法也就水到渠成,因此我用大篇幅力圖將這個演算法的思想和細節闡述清楚.可行流演...

loj 115 無源匯有上下界可行流

這是一道模板題。n 個點,m 條邊,每條邊 e 有乙個流量下界 text e 和流量上界 text e 求一種可行方案使得在所有點滿足流量平衡條件的前提下,所有邊滿足流量限制。第一行兩個正整數 n m 之後的 m 行,每行四個整數 s t text text 如果無解,輸出一行no。否則第一行輸出y...

無源匯可行流 模板LOJ 115

自個設個源點s,匯點t,每個點 du i 入度 出度。du i 0時 加邊s i,邊權為du i du i 0時 加邊i t,邊權為 du i 設sum為所有 0的du i 的和 求s t的最大流,如果maxflow sum,則存在可行流,此時每條邊流掉的流量 它原本的下界就是實際的流量 dfs過程...