提出 #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 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| 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 |