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)\)