994. CSP 2020 第一轮(初赛)模拟 第 36 题

CSP 2020 第一轮(初赛)模拟 第 36 题

  1. (封禁 xxs)现有 nn 个 xxs(编号为 11 到 nn),每个 xxs 都有一个关注者,第 ii 个 xxs 的关注者是 aia_i。现在管理员要将其中的一些 xxs 的账号封禁,但需要注意的是如果封禁了第 ii 个人,那么为了不打草惊蛇,就不能封禁他的关注者 aia_i。现在想知道最多可以封禁多少个 xxs。

输入第一行是一个不超过 300000300000 的整数 nn,第二行是 nn 个 11 到 nn 的整数表示 aia_i。

输出一行,一个整数表示答案。

#include <cstdio>
using namespace std;
#define MAXN 300005
int n, ans = 0, a[MAXN], in[MAXN] = {0};
bool vis[MAXN] = {0};
void dfs(int cur, int w) {
    if(vis[cur])
        return;
    vis[cur] = true;
    if(w == 1) ans++;
    ①
    if(②)
        dfs(a[cur], ③);
}
int main() {
    scanf("%d", &n);
    for(int i = 1; i <= n; i++) {
        scanf("%d", &a[i]);
        in[a[i]]++;
    }
    for(int i = 1; i <= n; i++)
        if(!in[i]) ④;
    for(int i = 1; i <= n; i++)
        if(⑤) dfs(i, 0);
    printf("%d\n", ans);
    return 0;
}
 

33) ③处应填( )

{{ select(1) }}

  • 0
  • 1
  • w
  • 1-w