求乙個網格圖的最小割。
這個題一看就知道是乙個最小割模型,於是就快樂的打了dinic,也就快樂的tle了。
查了查資料才知道,這個題要用到對偶圖的知識:平面圖最小割對應對偶圖最短路。所謂對偶圖,就是以原圖中的面作為點(將s,t連線以將無界區域分成兩部分),原圖中的邊在對偶圖中變為連線相鄰的面,於是,顯然對偶圖中s到t的一條路徑代表了原圖的乙個割,最短路徑即最小割。
#include #include#include
#include
const
int n = 2000000 + 10
;const
int m = 6000000 + 10;
inthd[n], nxt[m], to[m], w[m], cnt;
intn, m, s, t;
intdis[n], vis[n];
struct
node
bool
operator
< (const node &x) const};
inline
void adde(int x, int y, int
z)
inline
void adde(int x, int y, int
z)
void
dij()
}}}
intmain ()
for (int i = 1; i < m; ++i)
for (int i = 1; i < n-1; ++i)
}for (int i = 1; i < m; ++i)
for (int i = 1; i < n; ++i)
scanf("%d
", &w);
adde(t,
2*(m-1)*i, w);
}for (int i = 1; i < n; ++i)
}dij();
printf(
"%d\n
", dis[t]);
return0;
}
BJOI2006 狼抓兔子
現在小朋友們最喜歡的 喜羊羊與灰太狼 話說灰太狼抓羊不到,但抓兔子還是比較在行的,而且現在的兔子還比較笨,它們只有兩個窩,現在你做為狼王,面對下面這樣乙個網格的地形 左上角點為 1,1 右下角點為 n,m 上圖中n 3,m 4 有以下三種型別的道路 1 x,y x 1,y 2 x,y x,y 1 3...
BJOI2006 狼抓兔子
題目 bzoj1001 洛谷p4001。題目大意 在一張n m的網格圖中,每個格仔都與其右 下 右下方各連有一條帶權無向邊。現在要你割去一些邊,使得左上角的點無法到達右下角的點。並且要割掉的邊的總權值最小。問最小是多少。解題思路 題意是求最小割,根據最小割等於最大流的定理,轉化為最大流即可。由於無向...
BJOI2006 狼抓兔子(網路流)
現在小朋友們最喜歡的 喜羊羊與灰太狼 話說灰太狼抓羊不到,但抓兔子還是比較在行的,而且現在的兔子還比較笨,它們只有兩個窩,現在你做為狼王,面對下面這樣乙個網格的地形 左上角點為 1,1 右下角點為 n,m 上圖中n 3,m 4 有以下三種型別的道路 1 x,y x 1,y 2 x,y x,y 1 3...