提出 #53209694


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

void hassan(){
    int n;
    cin >> n;
    vector<vector<int>> g(n , vector<int> (n));
    for(auto &a : g)    
        for(auto &b : a)
            cin >> b;
    
    int mod = 1e9 + 7;
    vector<int> dp(1 << n);
    dp[0] = 1;
    
    for(int i = 0; i < n; i ++){
        vector<int> new_dp(1 << n);
        for(int j = 0; j < n; j ++){
            for(int mask = 0; mask < (1 << n); mask ++){
                if(g[i][j] && (mask >> j & 1)){
                    new_dp[mask] += dp[mask ^ (1 << j)];
                    if(new_dp[mask] >= mod)
                        new_dp[mask] -= mod;
                }
            }
        }
        dp.swap(new_dp);
    }
    cout << dp[(1 << n) - 1] << '\n';
}

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    // int t; cin >> t; while(t --)
    hassan();
}

提出情報

提出日時
問題 O - Matching
ユーザ hassan_
言語 C++ 20 (gcc 12.2)
得点 100
コード長 934 Byte
結果 AC
実行時間 729 ms
メモリ 19668 KiB

ジャッジ結果

セット名 All
得点 / 配点 100 / 100
結果
AC × 17
セット名 テストケース
All 0_00, 0_01, 0_02, 0_03, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12
ケース名 結果 実行時間 メモリ
0_00 AC 3 ms 3520 KiB
0_01 AC 1 ms 3524 KiB
0_02 AC 1 ms 3520 KiB
0_03 AC 548 ms 19640 KiB
1_00 AC 1 ms 3596 KiB
1_01 AC 1 ms 3500 KiB
1_02 AC 297 ms 19584 KiB
1_03 AC 329 ms 19556 KiB
1_04 AC 404 ms 19508 KiB
1_05 AC 454 ms 19608 KiB
1_06 AC 488 ms 19668 KiB
1_07 AC 531 ms 19588 KiB
1_08 AC 589 ms 19588 KiB
1_09 AC 611 ms 19632 KiB
1_10 AC 659 ms 19604 KiB
1_11 AC 706 ms 19536 KiB
1_12 AC 729 ms 19584 KiB