这道题用dfs怎么做啊
查看原帖
这道题用dfs怎么做啊
1017368
__tomato__楼主2024/8/24 21:03

输出的答案有亿点点小问题

哪位好人帮忙看一下

#include<bits/stdc++.h>
using namespace std;
bool vis[10001];
int n, m, u, v, a[10001][10001], j, ans;
void dfs(int now, int cnt) {
	if (now == j && cnt > 2) {
		ans++;
		return ;
	}
	for (int i = 1; i <= n; i++) {
		if (a[now][i]  && !vis[i]) {
			cnt++;
			vis[i] = 1;
			dfs(i, cnt);
			cnt--;
			vis[i] = 0;
		}
	}
}
int main() {
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= m; i++) {
		scanf("%d%d", &u, &v);
		a[u][v] = 1;
		a[v][u] = 1;
	}
	for (int i = 1; i <= n; i++) {
		for (j = 1; j <= n; j++) {
			memset(vis, 0, sizeof(vis));
			dfs(i, 0);
		}
	}
	printf("%d", ans);
	return 0;
}

awa

2024/8/24 21:03
加载中...