比赛 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;
}