可以想到把奶牛當做水流,從最初奶牛在的節點,流到他最後停下的節點。
但是時間不容易在圖上體現出來,考慮二分這個時間(這是網路流常見套路),然後判定在這個時間內,所有奶牛能否流到匯點。
對於建圖,首先是對源點向每個點建一條邊,容量為這個點初始的奶牛數,每個點向匯點連一條邊,容量為這個點最多容納奶牛的數量。
至於中間點,在乙個確定的時間內,每個點能夠走向的其他點是固定的,可以預先用floyed預處理,對於這個點所有能夠走到的點連一條容量為inf的邊。
但是這樣有可能會出問題:
1可以走到2,2可以走到3,但是在圖中1也可以走到3了,如何消除這種連鎖的影響呢?
我們可以將每個點拆成兩部分,左部點連源點,右部點連匯點,對於中間的邊只允許從左部點連向右部點。
#includeusing namespace std;
#define int long long
inline int read()
while(ch>='0'&&ch<='9')
return x*w;
}inline void write(int x)
const int n=210,m=1e5+100,inf=2e18;
int n,m,s,t,a[n],b[n],f[n][n];
struct nodee[m<<1];
int hd[n<<1],cnt=1,now[n<<1],d[n<<1];
void add(int x,int y,int z)
queueq;
bool bfs()
} return 0;
}int dinic(int x,int flow)
if(r==maxn+1)
write(r);
return 0;
}
luogu2402 奶牛隱藏
在乙個農場裡有n塊田地。某天下午,有一群牛在田地裡吃草,他們分散在農場的諸多田地上,農場由m條無向的路連線,每條路有不同的長度。突然,天降大雨,奶牛們非常混亂,想要快點去躲雨。已知每個田地都建立有乙個牛棚,但是每個牛棚只能容納一定數量的牛躲雨,如果超過這個數量,那多出的牛只能去別的田地躲雨。奶牛們每...
luogu P2402 奶牛隱藏
題目傳送門 題意 有n個點,m條邊,每乙個點一開始都有b1i頭奶牛,並且都可以容納b2i頭奶牛,但是b1i有可能大於b2i,因此奶牛需要遷徙,遷徙的時間為路程的長度。求最小的時間,若無法完成,輸出 1。思路 容易想到最短路floyd,因為可以與處理出從i點到j點的最短路 即時間花費 然後發現時間好像...
題解 遊蕩的奶牛 C
題目 題目描述 奶牛們在被劃分成n行m列 2 n 100 2 m 100 的草地上游走,試圖找到整塊草地中最美味的牧草。farmer john在某個時刻看見貝茜在位置 r1,c1 恰好t 0 t 15 秒後,fj又在位置 r2,c2 與貝茜撞了正著。fj並不知道在這t秒內貝茜是否曾經到過 r2,c2...