<2023年1月30日更新》
#include #include #include #include #include #include #include #include #include #include #include #include typedef unsigned int uint;
typedef long long int ll;
typedef unsigned long long int ull;
typedef double db;
#define dbg printf("*")
using namespace std;
const int inf=(1<<28)-1;
const ll linf=((ll)1<<52)-1;
struct edge
pool[100000];
edge*et=pool;
edge*eds[200];
void addedge(int i,int j,ll c)
#define foreach_edge(i,j) for(edge*i=eds[j];i!=null;i=i->nxt)
int n;
int st,ed;
int dep[200];
ll dfs(int x,ll mi)
if(res<=0) dep[x]=-1;
return res;
}int qh,qt;
int q[400];
ll dinic()
qh++;
} if(dep[ed]==-1) break;
res=max((ll)0,res);
res+=dfs(st,linf); }
return res;
}//blocks define
#define st(i) (i)
#define ed(i) ((i)+ntot)
int ntot,m;
int main()
return 0;
}
ac vijos p1590
把整個程式copy過來了....
現在打乙個dinic已經沒有什麼問題了....
構圖方面還是比較坑
...
然後是類似於dinic的最小費用流.多路增廣.存圖同上,這裡省略了.
int n;
int st,ed;
int dist[205];
int cost_add;
bool used[205];
int dfs(int x,int mi)
used[x]=false;
if(res<=0) dist[x]=inf;
return res;
}int q[1000000];
int qt,qh;
int dinic()
}qh++;
} if(dist[ed]==inf) break;
cost_add=0;
dfs(st,inf);
res+=cost_add; }
return res;
}
注意dfs中使用了used在深搜的時候避免搜到環(最短路圖中可能存在0環).
以後寫最大流/最小費用最大流就果斷背模板了...
反正最大流的題目重不在演算法,重在建模.....
而且dinic又好理解又好寫(相對於sap而言)
模板 網路最大流 最大流
給出乙個網路圖,以及其源點和匯點,求出其網路最大流。in put role presentation inp utin put4 5 4 3 4 2 30 4 3 20 2 3 20 2 1 30 1 3 40ou tput role presentation out puto utpu t50最大...
模板 網路最大流 最大流
給出乙個網路圖,以及其源點和匯點,求出其網路最大流。in put role presentation inp utin put4 5 4 3 4 2 30 4 3 20 2 3 20 2 1 30 1 3 40ou tput role presentation out puto utpu t50最大...
最大流模板
include define mem a,b memset a,b,sizeof a define for a,b,c for int a b a c a using namespace std typedef long long ll const int maxn 1000005 const in...