比赛 |
2024暑期C班集训4 |
评测结果 |
ATTTTTTTTT |
题目名称 |
勇者 |
最终得分 |
10 |
用户昵称 |
liuyiche |
运行时间 |
27.000 s |
代码语言 |
C++ |
内存使用 |
5.28 MiB |
提交时间 |
2024-07-04 11:01:38 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int n, m, ans = 0;
int mod = 1e9+7;
struct node
{
vector<int> nxt;
};
vector<node> v(305);
bool vis[305];
inline bool solve(int step, int cnt)
{
if(cnt == n)
return true;
vis[step] = 1;
bool tmp = 0;
for(int i = 0; i < v[step].nxt.size(); ++i)
if(vis[v[step].nxt[i]] == 0)
tmp = max(solve(v[step].nxt[i],cnt+1),tmp);
vis[step] = 0;
return tmp;
}
inline void dfs(int x, int cnt)
{
if(cnt == m)
{
bool flag = true;
for(int i = 1; i <= n; ++i)
{
if(solve(i,1) == false)
{
flag = false;
break;
}
}
if(flag == true)
{
ans++;
ans %= mod;
}
return;
}
for(int i = 1; i <= n; ++i)
{
if(i == x)
continue;
v[x].nxt.push_back(i);
dfs(i,cnt+1);
v[x].nxt.pop_back();
}
}
int main()
{
freopen("rotk.in", "r", stdin);
freopen("rotk.out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n >> m;
vis[1] = 1;
dfs(1,0);
cout << ans;
return 0;
}