https://nanti.jisuanke.com/t/41384
比赛时WA到飞的一道题
题目:N个点从左到右为1--n 有两种操作
1. 让x点不可达
2.查询x(包括x)后第一个可达的点
用Map模拟并查集 删除一个点时 令x的父亲等于x+1的父亲 查询时直接输出x的父亲
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 100;
unordered_map<int, int> fa;
int findfa(int x) {
if (!fa.count(x)) return x;
return fa[x] = findfa(fa[x]);
}
int main() {
// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
int n, q;
scanf("%d %d", &n, &q);
int op, x;
while (q--) {
scanf("%d %d", &op, &x);
if (op == 1) {
fa[x] = findfa(x + 1);
} else {
int ans = findfa(x);
if (ans > n) ans = -1;
printf("%d\n", ans);
}
}
return 0;
}







Comments | NOTHING