結果
| 問題 |
No.2435 Order All Company
|
| コンテスト | |
| ユーザー |
0214sh7
|
| 提出日時 | 2023-08-13 13:14:04 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 1,247 bytes |
| コンパイル時間 | 1,655 ms |
| コンパイル使用メモリ | 198,048 KB |
| 最終ジャッジ日時 | 2025-02-16 07:43:49 |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 6 WA * 30 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
const long long MOD = 998244353;
int main(void){
//cin.tie(nullptr);
//ios::sync_with_stdio(false);
long long N,K;
cin >> N >> K;
vector<vector<pair<long long,long long>>> E(K);
for(int k=0;k<K;k++){
long long t;
cin >> t;
E[k].resize(t);
for(int i=0;i<t;i++){
long long a,b;
cin >> a >> b;
a--;b--;
if(a>b)swap(a,b);
E[k][i] = {a,b};
}
}
//B[i][j] := k-iの橋をj社に発注できるようなk(<i)の数
long long B[1000][10]={};
for(int j=0;j<K;j++){
for(int i=0;i<(int)E[j].size();i++){
B[E[j][i].second][j]++;
}
}
//dp[i][S] := 0番~i番までの街が連結になり、発注した建設会社の集合がSのときの発注の仕方の数
long long dp[1001][1024] = {};
dp[0][0] = 1;
for(int i=0;i<N-1;i++){
for(int S=0;S<(1<<K);S++){
for(int j=0;j<K;j++){
dp[i+1][S|(1<<j)] += (B[i+1][j]*dp[i][S])%MOD;
dp[i+1][S|(1<<j)] %= MOD;
}
}
}
long long Ans = dp[N-1][(1<<K)-1];
cout << Ans << endl;
return 0;
}
0214sh7