sam的图是无环图,但是一个点可能被多个点到达,所有我们在求一个点权值和的时候,先判断这个点有没有值,有值就直接跑路了
void dfs2(int x){ if(f[x])return; f[x]=sum[x]; for(int i=0;i<26;i++) if(ch[x][i]){ dfs2(ch[x][i]); f[x]+=f[ch[x][i]]; } }