傳送門
題意:看原題吧,想不出比原題更好的描述了- -
solution:
一開始思考過用網路流,但是想不出如何建圖,最後還是去看了題解qwq,建圖思路很妙啊,我們先把每個點拆成四個小點,分別對應上,下,左,右,然後對應每種水管在點內分別建圖(細節大家可以結合**思考一下),由於這是乙個二分圖(拆點之前),所以說我們對每個點進行黑白染色,這樣便可以確定每個點是連向t還是從s連過來,點與點之間都要建流量為1,費用為0的邊,最後跑費用流即可,注意這裡我們的流量表示的是「最大能匹配到的水管數量」,同時注意我們連邊的順序。
**:
#include
#include
using namespace std;
const int nm=2010;
const int n=8010;
struct edge[20
*n];
int tot=0;
int head[n];
int n,m,size=1,s,t;
int id[nm][nm][4];
int kx[4]=;
int ky[4]=;
int pre[n],prv[n];
bool vis[n];
int dis[n];
intq[n*n];
void adde(int i,int j,int v,int f)
void add(int i,int j,int v,int f,int b)
void work(int i,int j,int type,int
pos,int b)
else
if (type==2)
else
if (type==3)
else
if (type==4)
else
}bool spfa()}}
}return (dis[t]!=1e9);
}int main()
for (int i=1,j,_x,_y;i<=n;i++)
for (j=1;j<=m;j++)
if ((i+j)&1)
for (int k=0;k<4;k++)
int ansv=0,ansf=0;
while (spfa())
printf("%d",(ansf==sum/2)?ansv:-1);
}
清華集訓 2017 無限之環(費用流)
清華集訓 2017 無限之環 費用流神題。對於每乙個方格延伸出去的每一根水管,有且僅有乙個其他方格延伸出的水管與之相連,這樣就不會漏水。即 每根水管的容量為 1 1 且必須滿流。然而即使產生了最優情況,整個管網也不一定是一整個聯通塊,而可能被分成若干塊。因此,我們要對每個格點染色,相鄰的兩個格點,乙...
洛谷P4003 無限之環 費用流
曾經有一款流行的遊戲,叫做 infinity loop,先來簡單的介紹一下這個遊戲 遊戲在乙個n m n m的網格狀棋盤上進行,其中有些小方格中會有水管,水管可能在 格某些方向的邊界的中點有介面,所有水管的粗細都相同,所以如果兩個相鄰方格的 共邊界的中點都有接頭,那麼可以看作這兩個接頭互相連線。水管...
清華集訓 2017 無限之環
無限之wa 本題如果知道是網路流的話,其實建圖不算特別神奇,但是比較麻煩。資料範圍過大,插頭dp不能處理,而且是乙個網格圖,考慮網路流。先看是不是二分圖?每個格仔只會和相鄰四個格仔發生關係 所以,黑白染色正好。i j為偶數左部點,i j為奇數右部點 不漏水是什麼?每個管道的四個口都能和別的接好。s向...