題目鏈結-p2472
還是 點的拆分,把所有點拆為兩個點,其連線容量為點的數值,然後建圖求解即可
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
const
int maxn=
1e6+50;
const ll inf=
0x3f3f3f3f
;const
int mod=
998244353
;const
int hash=
131;
int n, m, cnt;
//點,邊,前向星計數
int head[maxn]
;//前向星
int level[maxn]
;//分層
int cur[maxn]
;//當前弧優化
struct edge
edge[maxn*6]
;void
add(
int u,
int v,
int val)
bool
find_level
(int s,
int t)
//源點和匯點,該bfs函式用來確定深度(層次)
int u=s;
level[u]=1
; q.
push
(u);
while
(!q.
empty()
)}if(level[t]
)//如果t有分層則繼續下一步的處理
}return
false;}
ll updata
(int u,ll u_val,
int t)
//dfs更新
ll used=0;
//使用多少容量
for(
int&i=cur[u]
;~i;i=edge[i]
.next)
//當前弧優化的神奇操作,}if
(used==
0) level[u]=-
1;//找不到增廣路,減枝,節點作廢
return used;
}ll dinic
(int s,
int t)
return ans;
}void
init()
string ss[30]
;string mp[30]
;int
main()
int s=1;
int t=r*len*2+
2;for(
int i=
1;i<=r;i++)}
for(
int x=
-d;x<=d;x++
)else
if(ss[i+x]
[j+y]
!='0')}
}}}for
(int i=
1;i<=r;i++
) cin>>mp[i]
;int numm=0;
for(
int i=
1;i<=r;i++)}
} n=r*len*2+
2;cout
(s,t)
}
洛谷P1343 網路最大流
模板題,注意判斷最大流是否為0 連線 include include include include include include include include include include include include using namespace std typedef long lo...
洛谷3376 網路最大流
題目描述 如題,給出乙個網路圖,以及其源點和匯點,求出其網路最大流。輸入輸出格式 輸入格式 第一行包含四個正整數n m s t,分別表示點的個數 有向邊的個數 源點序號 匯點序號。接下來m行每行包含三個正整數ui vi wi,表示第i條有向邊從ui出發,到達vi,邊權為wi 即該邊最大流量為wi 輸...
洛谷P3376 模板 網路最大流
如題,給出乙個網路圖,以及其源點和匯點,求出其網路最大流。輸入格式 第一行包含四個正整數n m s t,分別表示點的個數 有向邊的個數 源點序號 匯點序號。接下來m行每行包含三個正整數ui vi wi,表示第i條有向邊從ui出發,到達vi,邊權為wi 即該邊最大流量為wi 輸出格式 一行,包含乙個正...