1491 遊河 最大流Dinic

2021-08-20 09:26:57 字數 1779 閱讀 7197

description

假期,hrbust集訓隊在tang長老的帶領下去河上坐船遊玩。 但是很多隊員想單獨坐船遊覽風光,體驗乙個人的旅行。 但是教主說那樣會很危險,而且似乎也沒那麼多的旅行路線。可是隊員們還是堅持自己的想法,於是教主提了個要求:如果遊覽的路線足夠一人一條,而且每條路線沒有重複的水路的話,就同意大家的做法,不然,tang長老就請大家集體吃冰棍,一起坐船去。

集訓隊這次一共去了 d 個人,(1<=d<=200),已知河道上一共n個河叉(2<=n<=200),大家都是從1號位置開始旅行的,終點為第 n 號位置,現在已知道在這n個位置之間有 m 條連通的水路(2<=m<=40000)。

請幫大家計算下存在的路線數是否夠大家單人旅行的。

input

line 1: 河叉總數 n,道路總數 m,集訓隊人數 d。

line 2…m+1:兩個整數 a,b,表示位置 a 和 b 之間有一條直接連通的水路。

output

line1:如果存在的路徑數夠大家單人旅行(路徑數》= d),輸出「orz!」,否則輸出「jiao zhu v5!」。

sample input

2 2 1

1 21 2

7 9 5

1 22 3

3 71 4

4 34 5

5 71 6

6 7sample output

orz!

jiao zhu v5!

hint

注意是邊是雙向的。

第一組樣例:

從 1 到 2 有兩條沒有重複道路的路徑。

第二組樣例:

從 1 到 7 有三條符合條件的路徑:

1 - 2 - 3 - 7

1 - 4 - 5 -7

1 - 6 - 7

最大流模板題,重邊數量為乙個節點到另乙個節點的容量,直接求1到n的最大流量即可。建圖時遇到一條重邊就計數,最後每條邊有多少條重邊即可以走幾個不同路線。也就是可走容量

#include

using

namespace

std;

const

int maxn=208;

const

int inf=0x3f3f3f3f;

struct edge

edge(int a,int b,int c)

};int dep[maxn];

int n,m,d;

vector

mp[maxn];

void add(int from,int to,int val)

int bfs()}}

return0;}

int dfs(int s,int t,int flow)

}return pre;

}int dinic()

mapvis;

int main()

map::iterator it;

for(it=vis.begin(); it!=vis.end(); it++)

add(it->first/300,it->first%300,it->second);

printf("%s\n",dinic()>=d?"orz!":"jiao zhu v5!");}}

最大流dinic模板

運輸問題1 輸入檔案 maxflowa.in 輸出檔案 maxflowa.out 簡單對比 時間限制 1 s 記憶體限制 128 mb 問題描述 乙個工廠每天生產若干商品,需運輸到銷售部門進行銷售。從產地到銷地要經過某些城鎮,有不同的路線可以行走,每條兩城鎮間的公路都有一定的流量限制。請你計算,在不...

最大流 Dinic模板

date 2015 8 21 晚上 author itak motto 今日的我要超越昨日的我,明日的我要勝過今日的我 以創作出更好的 為目標,不斷地超越自己。include include using namespace std oo表示無窮大 const int oo 1e9 5 mm表示邊的最...

最大流模板(Dinic)

和最小費用流模板對比著看 最小費用流模板 貼上最大流模板 include includeusing namespace std const int oo 1e9 oo 表示無窮大 const int mm 111111111 mm 表示邊的最大數量,記住要是原圖的兩倍,在加邊的時候都是雙向的 con...