洛谷P2472 網路最大流(點的拆分)

2021-10-09 22:44:59 字數 1919 閱讀 1238

題目鏈結-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 輸出格式 一行,包含乙個正...