我們可以得到乙個結論:沒有兩個機械人走過的路會重疊
所以題目就轉變為了能不能讓機械人的路徑不重疊且每個機械人能到達終點
直接乙個點朝他四連通方向的四個點連容量為1的邊即可
#includeusingnamespace
std;
typedef
long
long
ll;typedef
intjqk;
intn, m;
char ch[105][105
];const
int dir[4][2] = , , , };
namespace
dinic
inline
bool
bfs()
//memset(lev, -1, sizeof(lev));
queueq;
lev[s] = 0
; q.push(s);
while
(q.size())
magic one way optimize
*/}}
for (int i = 0; i <= maxp + 1; i++)
//memcpy(cur, head, sizeof head);
return lev[t] != -1
; }
jqk dfs(
intu, jqk maxf)
jqk cnt = 0
, tem;
for (int &i = cur[u]; i; i =nxt[i])
if (f[i] && lev[to[i]] == lev[u] + 1
) }
if (!cnt)
return
cnt;
}jqk dinic()
return
ans;
}void init(int ss, int
tt)
ed = 1
; s =ss;
t =tt;
return
; }
void work(int
aim)
for (int k = 0; k < 4; k++)
addedge((i - 1)*m + j, (dx - 1)*m + dy, 1
); }}}
}int ans =dinic();
printf(ans == aim ? "
yes\n
" : "
no\n");
}}int
main()
for (int i = 1; i <= a; i++)
for (int i = 1; i <= b; i++)
if (a >b)
dinic::work(a);
}return0;
}
深海機械人 網路流
深海資源考察探險隊的潛艇將到達深海的海底進行科學考察。潛艇內有多個深海機械人。潛艇到達深海海底後,深海機械人將離開潛艇向預定目標移動。深海機械人在移動中還必須沿途採集海底生物標本。沿途生物標本由最先遇到它的深海機械人完成採集。每條預定路徑上的生物標本的價值是已知的,而且生物標本只能被採集一次。本題限...
網路流24題 深海機械人問題
網路流24題大多需要spj,所以需要乙個有spj的oj,本系列 均在www.oj.swust.edu.cn測試通過 這道題其實和數字梯形的第三個規律挺像的 點和路徑均可重合 唯一的差別就是這道題的路徑權值只能計算一次,那怎麼辦呢,其實不難,我們只要將容量為inf的邊的權值修改為0,在此基礎上再加一條...
深海機械人問題 網路流24題
思路 和方格取數差不多的一道題 只是輸入有點噁心 然而他好像提示了怎麼輸出 之後就是建圖標準最大費用最大流了 不知道為什麼spfa的最大流t了乙個點 難道說資料這麼喪心病狂嗎 zkw的話倒是50ms就跑完了 code 1 include 2 define dbg x cout x x endl34 ...