1 条题解
-
0
#include <bits/stdc++.h> #define ll long long #define mod 1000000007 #define mid (l+r>>1) using namespace std; const int N=500005; int n,m,k,s,t,w[N],u,v,op; ll b[N],c[N],U,S; int main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); srand(time(NULL)); cin>>n>>m; for (int i=1;i<=n;++i){ w[i]=rand(); S+=w[i]; } for (int i=1;i<=m;++i){ cin>>s>>t; U+=w[s];//当前权值 b[t]+=w[s];//当前点权值之和 c[t]=b[t];// 最大权值 } cin>>op; for (int i=1;i<=op;++i){ cin>>t>>u; if (t==1){ cin>>v; U-=w[u]; b[v]-=w[u]; } else if (t==2){ U-=b[u]; b[u]=0; } else if (t==3){ cin>>v; U+=w[u]; b[v]+=w[u]; } else { U+=(c[u]-b[u]); b[u]=c[u]; } if (U==S) puts("YES"); else puts("NO"); } }
- 1
信息
- ID
- 299
- 时间
- 2000ms
- 内存
- 512MiB
- 难度
- 1
- 标签
- 递交数
- 31
- 已通过
- 26
- 上传者