能互关
2025-07-12 17:06:54
发布于:广东
63阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) (x&-x)
#define fir first
#define sec second
#define otto auto
#define ls (u<<1)
#define rs (u<<1|1)
#define mid ((l+r)>>1)
#define getbit(x,y) (((x)>>(y))&1)
#define bit(x) ((int)1<<(x))
#define getb(x) (((x)+B-1)/B)
namespace india250418 {
#ifdef frd
char buf[1<<23],*p1=buf,*p2=buf,obuf[1<<23],*O=obuf;
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
#define putchar(ch) *O++=ch
#endif
#ifdef fre
void fropen(string s = fre) {freopen((s+".in").c_str(),"r",stdin);freopen((s+".out").c_str(),"w",stdout);}
void frclose() {fclose(stdin);fclose(stdout);}
#endif
bool _check(const char &x) {return isgraph(x);}
inline char _read(char &x) {x=getchar();while(!_check(x))x=getchar();return x;}
inline void _read(double &x) {cin>>x;}
inline void _read(long double &x) {cin>>x;}
inline char _cread(char &x) {x=getchar();return x;}
inline void cread(char *l,char *r) {char *cur=l;_read(*cur);cur++;while(cur!=r){_cread(*cur);++cur;}}
inline char *read(char *l) {char *cur=l;_read(*cur);cur++;while(_check(_cread(*cur)))++cur;*cur=0;return cur;}
template<typename T>inline char _read(T &x) {char t=getchar();bool tmp=0;x=0;while(t<'0'||t>'9'){if(t=='-')tmp=1;t=getchar();};while('0'<=t&&t<='9'){x=(x<<1)+(x<<3)+(t^48);t=getchar();}if(tmp)x=-x;return t;}
template<typename T>inline void _re_ad(T &x) {char t=getchar();bool tmp=0;x=0;while(t<'0'||t>'9'){if(t=='-')tmp=1;t=getchar();};x=(t^48);if(tmp)x=-x;}
void read(){}template<typename T,typename ...T2>inline void read(T &x,T2 &...oth) {_read(x);read(oth...);}
template<typename T>inline void read(char *l,char *r) {cread(l,r);}
template<typename T>inline void read(T *l,T *r) {T *cur=l;while(cur!=r){_read(*cur);++cur;}}
void re_ad(){}template<typename T>inline void re_ad(T *l,T *r) {T *cur=l;while(cur!=r){_re_ad(*cur);++cur;}}
template<typename T,typename T2>inline void read(T *l,T *r,T2 *l2,T2 *r2) {T *cur=l;T2 *cur2=l2;while(cur!=r){_read(*cur),_read(*cur2);++cur,++cur2;}}
template<typename T,typename T2,typename T3>inline void read(T *l,T *r,T2 *l2,T2 *r2,T3 *l3,T3 *r3) {T *cur=l;T2 *cur2=l2;T3 *cur3=l3;while(cur!=r){_read(*cur),_read(*cur2),_read(*cur3);++cur,++cur2,++cur3;}}
inline void _write(char x) {putchar(x);}inline void _write() {putchar(' ');}inline void _write(const char* x) {while(*x){putchar(*x);++x;}}
inline void _write(double x) {cout<<x;}inline void _write(long double x) {cout<<x;}
template<typename T>inline void _write(T x) {if(x<0){putchar('-');x=-x;}if(x/10)_write(x/10);putchar((x%10)^48);}
template<typename T>inline void _write(T x,T y) {if(x<0){putchar('-');x=-x;}if(x/y)_write(x/y,y);putchar((x%y)^48);}
template<typename T>inline void _bwrite(T x) {if(x<0){putchar('-');x=-x;}if(x>>1)_bwrite(x>>1);putchar((x&1)^48);}
inline void bwrite(){putchar('\n');}inline void write(){putchar('\n');}
template<typename T>inline void write(T x) {_write(x);putchar('\n');}
template<typename T>inline void bwrite(T x) {_bwrite(x);putchar('\n');}
template<typename T,typename ...T2>inline void write(T x,T2 ...oth) {_write(x);putchar(' ');write(oth...);}
template<typename T,typename ...T2>inline void bwrite(T x,T2 ...oth) {_bwrite(x);putchar(' ');bwrite(oth...);}
template<typename T>inline void bwrite(T *l,T *r) {if(l==r) return write();T *cur=l;_bwrite(*cur);++cur;while(cur!=r){putchar(' ');_bwrite(*cur);++cur;}putchar('\n');}
template<typename T>inline void write(T *l,T *r) {if(l==r) return write();T *cur=l;_write(*cur);++cur;while(cur!=r){putchar(' ');_write(*cur);++cur;}putchar('\n');}
template<typename T>inline void cwrite(T *l,T *r) {if(l==r) return write();T *cur=l;while(cur!=r){_write(*cur);++cur;}putchar('\n');}
template<typename T>inline void wwrite(T *l,T *r) {if(l==r) return write();T *cur=l;while(cur!=r){_write(*cur);putchar('\n');++cur;}}
}
using namespace india250418;
#ifdef frd
#undef getchar
#undef putchar
#endif
#ifdef maker
#include<random>
#include<fstream>
#include<iostream>
#include<string>
std::mt19937 rd(time(0));std::ofstream O;signed T=20;
template<typename T>T myrand(const T &mod) {T res = 0;for (int i = 1; i <= 3; i++)res = (res << 15 | rd()) % mod;return res;}
signed __main__();
signed main() {while(T--) {std::cerr<<T<<std::endl;
std::string s;s=std::to_string(T);while(s.size()<2) s='0'+s;
s=fre+s;O.open("IO");O<<s<<std::endl;O.close();freopen((s + ".in").c_str(), "w", stdout);
__main__();
std::cerr<<"Ready!\n";fclose(stdout);system(((std::string)fre+".exe").c_str());
}return 0;}
#define main __main__
#endif
#define int ll
#define cia const int &
#define cna const node &
#define ll long long
#define ld long double
#define db double
#define ull unsigned long long
typedef pair<int,int> pii;
typedef pair<bool,bool> pbb;
constexpr int mod=998244353;
constexpr int inf=2e9;
constexpr int N=5e5+5;
constexpr int M=5e6+6;
constexpr int K=4;
constexpr int L=13;
constexpr int B=333;
constexpr ld eps=1e-2;
#define U tr[u]
int w[N],g[N],cur[N],sum,ans;
signed main() {
#ifdef fre
fropen();
#endif
mt19937 rg(time(0));
int n,m;read(n,m);
for(int i=1;i<=n;i++) w[i]=rg(),ans+=w[i];
while(m--) {
int u,v;read(u,v);
g[v]+=w[u],cur[v]+=w[u],sum+=w[u];
}
int q;read(q);
while(q--) {
int op;read(op);
if(op==1) {
int u,v;read(u,v);
cur[v]-=w[u],sum-=w[u];
} else if(op==2) {
int u;read(u);
sum-=cur[u],cur[u]=0;
} else if(op==3) {
int u,v;read(u,v);
cur[v]+=w[u],sum+=w[u];
} else {
int u;read(u);
sum-=cur[u],cur[u]=g[u];
sum+=g[u];
}
write(sum==ans?"YES":"NO");
}
#ifdef frd
fwrite(obuf,O-obuf,1,stdout);
#endif
return 0;
}
这里空空如也
有帮助,赞一个