想写个DFS混一下前面的40分,,但是一分也没有emm,想请教一下各位大佬,这段代码哪里写错了((,非常感谢quq
#include<bits/stdc++.h>
using namespace std;
const int maxn=10005;
int n,m,q,ans;
long long vis[maxn],num[maxn],mm[maxn][maxn];
long long t[maxn][maxn];
//vector<vector<int>> t;
//struct NODE{
// int u,v;
//}g[maxn];
void dfs(int r){
vis[r]=1;
int cnt;
for(int i=1;i<=m;i++){
if(vis[i]!=0) cnt++;
}
if(cnt==m){
ans=1;
return;
}
else{
if(num[r]==1 && vis[t[r][0]]==0){
dfs(t[r][0]);
//vis[t[r][0]]=0;
}
else{
ans=0;
return;
}
}
return;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
t[u][num[u]]=v;num[u]++;mm[u][v]=num[u];
}
cin>>q;
for(int i=1;i<=q;i++){
int b,u;cin>>b>>u;
if(b==1){
int v;
cin>>v;
t[u][mm[u][v]]=0;num[u]--;
}
if(b==2){
vis[u]=1;
}
if(b==3){
int v;
cin>>v;
t[u][mm[u][v]]=v;num[u]++;
}
if(b==4){
vis[u]=0;
}
dfs(1);
if(ans==1) cout<<"Yes"<<'\n';
else cout<<"No"<<'\n';
}
return 0;
}