求助大佬
查看原帖
求助大佬
1119132
Seleney10楼主2024/7/8 10:22
#include <bits/stdc++.h>
using namespace std;

int n, m, u, v; 
int tun[1005][1005]; 
int ans = 0, sum = 0; 
int cnt[1005], b[1005];

void dfs(int now){
	if(now == v){
		sum++;
		for(int i=1; i<=n; i++)
			if(b[i] == 1) cnt[i]++;
	}
	for(int i=1; i<=n; i++){
		if(tun[now][i] == 1 && b[i] == 0){
			b[i] = 1;
			dfs(i);
			b[i] = 0;
		}
	}
}

int main(){
	memset(tun, 0, sizeof(tun));
	cin>>n>>m;
	for(int i=1; i<=m; i++){
		cin>>u>>v;
		tun[u][v] = 1;
		tun[v][u] = 1;
	}
	cin>>u>>v;
	dfs(u);
	if(sum > 0){
		for(int i=1; i<=n; i++){
			if(cnt[i] == sum) ans++; 
		}
		cout<<ans; //这里
	}
	else cout<<-1; //把这一行注释掉才能AC
	return 0;
}

代码末尾输出ans, 如果不把最后的else注释掉就会WA, 这是什么原理?!?

2024/7/8 10:22
加载中...