首页 > 代码库 > 【BZOJ】4764 弹飞大爷

【BZOJ】4764 弹飞大爷

【算法】Link-Cut Tree

【题意】一个n个数字组成的序列,a[i]表示移动到i+a[i]处,序列值可动态修改,求从i处开始移动到序列外的最小步数。

【题解】将序列视为n个点,外界视为n+1,则每个点有且只有一条边连出去,由该性质可知是一个基环内向森林,问题转化为支持插入删除边并求点(n+1)到点i的距离。

由基环内向森林以及点n+1不能向外出边可知点n+1必然在无环的树上,所以若出现环则输出-1。

【BZOJ】4764 弹飞大爷