全 TLE 求加边界条件
查看原帖
全 TLE 求加边界条件
574745
littlesnake楼主2024/6/13 20:27

rt.思路是搞一个 solve 函数类似 DFS 的查找方案数,但是不会写边界条件,希望大佬都能帮忙呢。

# include <bits/stdc++.h>
# define ll long long
# define N 15
# define M 110

using namespace std;

int n, m, head[N], ver[M], Next[M], tot, ans, x, y, z;
bool F[N], flag;

void ADD (int x, int y) {
	ver[++ tot] = y;
	Next[tot] = head[x];
	head[x] = tot;
}

void solve (int x) {
	F[x] = true;
	flag = true;
	for (int i = 1; i <= n; i ++) {
		if (! F[i]) {
			flag = false;
			break;
		}
	}
	if (flag) {
		ans ++;
		memset (F, 0, sizeof (F));
		return ;
	}
	for (int i = head[x]; ~ i; i = Next[i]) {
		int y = ver[i];
		if (F[y]) continue;
		solve (y);
	}
}

int main () {

	cin >> n >> m;
	while (m --) {
		cin >> x >> y;
		ADD (x, y);
	}
	solve (1);
	cout << ans;

	return 0;

}

2024/6/13 20:27
加载中...