请教一下DFS((谢谢quq
查看原帖
请教一下DFS((谢谢quq
384450
XXXXXXXXXXXerxes楼主2022/11/10 19:48

想写个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;
}
2022/11/10 19:48
加载中...