【补题】51nod

11.27

孢子传播

暴力连边是 \(O(n^{2})\),发现 \(k\) 很小,考虑把每个种类的孢子移动表现出来

\(nk\) 个新点,\(id[i,j]\) 表示一个从类型 \(j\) 土壤出发的孢子走到 \(i\) 的最小距离,连边:

  • 原点散发孢子:\((i,id[i,q[i]],0)\)
  • 孢子移动 \((id[i-1,j],id[i,j],1),(id[i,j],id[i+1,j],1)\)
  • 孢子扎根:\(\text{if }s_{j,q[i]}=1:(id[i,j],i,0)\)

最后在新图上跑 \(01\) BFS 即可,复杂度 \(O(nk)\)

posted @ 2021-11-29 08:45  401rk8  阅读(43)  评论(1编辑  收藏  举报