萌新妹子刚学状压求调WA#2~5 20pts
查看原帖
萌新妹子刚学状压求调WA#2~5 20pts
1305692
xiangixuan楼主2024/12/19 17:14
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, g[1 << 20][25], f[1 << 20][25];
signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    memset(f, 0x3f, sizeof f);
    f[1][1] = 0;
    cin >> n;
    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= n; ++j)
            cin >> g[i][j];
    //f[点][状态]
    for (int k = 1; k <= (1 << n) - 1; ++k) //状态
        for (int i = 1; i <= n; ++i)        //当前点
            if ((k >> (i - 1)) & 1)
                for (int j = 1; j <= n; ++j) //上个点
                    if (i != j && ((k >> (j - 1)) & 1))
                        f[i][k] = min(f[i][k], f[j][k - (1 << (i - 1))] + g[i][j]);
    cout << f[n][(1 << n) - 1] << '\n';
    return 0;
}
2024/12/19 17:14
加载中...