CF755C PolandBall and Forest - Solution
现在有一个未知的森林,给
离一个结点最远的点
孤立点是平凡的,以下的树默认结点数都大于
结点大于
所以当一个点
于是我们不妨计数不同的
一个树不会漏,因为它是非孤立点,一定有两个不同的直径端点;也不会重,因为满足题目限制的直径是唯一的。这样可以就
可以说明本题直接将
int n, x, a[maxn], ans;
int main() {
scanf("%d", &n);
rep(i, 1, n) scanf("%d", &x), ans += (x == i), a[x] |= (x != i); int s = 0;
rep(i, 1, n) if (a[i]) ++s; ans += s / 2;
printf("%d\n", ans);
return 0;
}