TLE:
if (mp[h]) return mp[h];
else return mp[h] = dfs(...);
改成这样:
if (mp.find(h) != mp.end()) return mp[h];
else return mp[h] = dfs(...);
最优解第一页。
原理:当 mp[h]=0 的时候,会塞个 0 进去 map 里面,由于 map 内部是平衡树,就有 0 的位置,查找是能找到的,即 mp.find(h) != mp.end(),但是原来那样写,当有很多个 mp[x]=0 的时候,mp[h]=0,就要重复跑很多次 dfs。