やるだけ。
class CellRemoval {
public:
int cellsLeft(vector <int> p, int del)
{
if (p[del] == -1) return 0;
const int size = p.size();
int cnt[size];
fill(cnt, cnt + size, 0);
for (int i = 0; i < size; ++i) {
for (int n = i; p[n] != -1; n = p[n]) {
++cnt[n];
}
}
int ret = count(cnt, cnt + size, 1);
for (int i = 0; i < size; ++i) {
if (cnt[i] != 1) continue;
for (int n = i; p[n] != -1; n = p[n]) {
if (n == del) {
--ret;
break;
}
}
}
return ret;
}
};