【Codeforces Round #445 (Div. 2) C】 Petya and Catacombs
【链接】 我是链接,点我呀:)
【题意】
【题解】
看看时间戳为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;
}