【Codeforces Round #445 (Div. 2) C】 Petya and Catacombs

时间:2022-12-19 22:08:44

【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

看看时间戳为i的点有哪些。
每次优先用已经访问过的点。
如果不行就新创一个点。
注意新创点的时间戳也是i.

【代码】

#include <bits/stdc++.h>
using namespace std; const int N = 2e5; int n;
int now = 1, tot = 1;
vector <int> have[N + 10];
int before[N + 10]; int main() {
//freopen("F:\\c++source\\rush_in.txt", "r", stdin);
int n;
scanf("%d", &n);
int x;
scanf("%d", &x);
have[1].push_back(tot);
before[tot] = 1; for (int i = 2; i <= n; i++) {
scanf("%d", &x);
if (!have[x].empty()) {
now = have[x].back();
have[x].pop_back();
before[now] = i;
have[i].push_back(now);
}
else {
tot++;
have[i].push_back(tot);
before[tot] = i;
}
}
printf("%d\n", tot); return 0;
}