1 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int MAXN = 100000; int n, m; int nxt[MAXN + 5]; int pre[MAXN + 5]; bool vis[MAXN + 5]; int main() { cin >> n; nxt[1] = 0, pre[1] = 0; nxt[0] = 1, pre[0] = 1; for (int i = 2; i <= n; i++) { int k, p; cin >> k >> p; // i 放在了 k 的 p 边(0左、1右) // 放在 l、r 之间 int l, r; if (p == 0) l = pre[k], r = k; else l = k, r = nxt[k]; // 链表插入 nxt[l] = i, pre[i] = l; nxt[i] = r, pre[r] = i; } // 逻辑上删除 cin >> m; for (int i = 1; i <= m; i++) { int x; cin >> x; vis[x] = true; } // 输出 int pos = nxt[0]; while (pos != 0) { if (!vis[pos]) cout << pos << " "; pos = nxt[pos]; } return 0; }
- 1
信息
- ID
- 1792
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 3
- 已通过
- 3
- 上传者