1 条题解
-
0
#include <bits/stdc++.h> using namespace std; #define int unsigned long long const int N = 500010; int n, m, q, a[N], in[N], out[N], sum[N], tot, now, nv[N]; signed main() { freopen("galaxy.in", "r", stdin); freopen("galaxy.out", "w", stdout); scanf("%llu%llu", &n, &m); for (int i = 1; i <= n; ++i) { a[i] = rand(); tot += a[i]; } for (int i = 1; i <= m; ++ i) { scanf("%llu%llu", in + i, out + i); sum[out[i]] += a[in[i]]; now += a[in[i]]; } for (int i = 1; i <= n; ++ i) nv[i] = sum[i]; scanf("%llu", &q); while (q--) { int t; scanf("%llu", &t); if (t == 1) { int u, v; scanf("%llu%llu", &u, &v); nv[v] -= a[u]; now -= a[u]; } else if (t == 2) { int u; scanf("%lld", &u); now -= nv[u]; nv[u] = 0; } else if (t == 3) { int u, v; scanf("%llu%llu", &u, &v); nv[v] += a[u]; now += a[u]; } else { int u; scanf("%lld", &u); now += sum[u] - nv[u]; nv[u] = sum[u]; } if (now == tot) puts("YES"); else puts("NO"); } return 0; }
- 1
信息
- ID
- 261
- 时间
- 2000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 2273
- 已通过
- 53
- 上传者