#include <iostream>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <vector>
using namespace std;
struct AB{
unsigned long long id;
unsigned long long to;
}ab;
vector <AB> ed[500005];
unsigned long long n,m,q,k,ked[500006],kpoint[500005],pointo[500005],pointr[50005],,sumed,sumpoint,o,u,v;
void init()
{
for(unsigned long long i=1;i<=n;i++)
sumpoint += kpoint[i] = rand()*rand();
return ;
}
void destroyEG()
{
scanf("%llu%llu",&u,&v);
sumed -= kpoint[u];
pointr[v] -= kpoint[u];
return ;
}
void destoryPOINT()
{
scanf("%llu",&u);
sumed -= pointr[u];
pointr[u] = 0;
return ;
}
void repairEG()
{
scanf("%llu%llu",&u,&v);
sumed += kpoint[u];
pointr[v] += kpoint[u];
return ;
}
void repairPOINT()
{
scanf("%llu",&u);
sumed += pointo[u] - pointr[u];
pointr[u] = pointo[u];
return ;
}
int main()
{
srand((unsigned)time(NULL));
scanf("%llu%llu",&n,&m);
init();
for(unsigned long long i=0;i<m;i++)
{
scanf("%llu%llu",&o,&ab.to);
ab.id = i;
ed[o].push_back(ab);
ked[i] = kpoint[o];
pointo[ab.to] += kpoint[o];
}
for(unsigned long long i=1;i<=n;i++)
{
pointr[i] = pointo[i];
for(unsigned long long j=0;j<ed[i].size();j++)
sumed += ked[ed[i][j].id];
}
scanf("%llu",&q);
while(q--)
{
scanf("%llu",&k);
switch(k)
{
case 1:
destroyEG();
break;
case 2:
destoryPOINT();
break;
case 3:
repairEG();
break;
case 4:
repairPOINT();
break;
default:
break;
}
printf(sumed==sumpoint?"YES ":"NO ");
printf("\n");
}
return 0;
}
记录 救救孩子吧