将调出的几个错都警示一遍罢。尽管有些估计很多人不会犯。
1.
求dfn序的时候:
很多人习惯性写成这样:
void dfs(int u)
{
rnk[u]=++idx,dfn[idx]=u;
for(int i=0;i<e[u].size();++i) dfs(e[u][i]);
}
应该将
rnk[u]=++idx,dfn[idx]=u;
给放后面去。
2.
举个例子:
定义了int p[N][18],deep[N];
那么注意跳的时候应该for(int i=17;i>=0;--i),别写成i=18了。
3.
注意题干:以其(即后文中提到的儿子节点)为根节点的子树中标号最小值最小
4.
小根堆开了吗?
总之,别像这个傻逼一样WA这么多发了!