結果
問題 |
No.762 PDCAパス
|
ユーザー |
|
提出日時 | 2019-05-10 19:59:55 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 73 ms / 2,000 ms |
コード長 | 1,183 bytes |
コンパイル時間 | 1,729 ms |
コンパイル使用メモリ | 173,040 KB |
実行使用メモリ | 8,036 KB |
最終ジャッジ日時 | 2024-07-02 01:02:39 |
合計ジャッジ時間 | 4,173 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 38 |
ソースコード
#include <bits/stdc++.h> using namespace std; constexpr long long mod = 1e9+7; int main(){ cin.tie(0); ios::sync_with_stdio(false); int N, M; cin >> N >> M; string S; cin >> S; vector<vector<int>> Es(N, vector<int>()); for (int i = 0; i < M; ++i){ int u, v; cin >> u >> v; --u; --v; if (S[u] == 'P'){ if (S[v] == 'D'){ Es[u].push_back(v); } }else if (S[u] == 'D'){ if (S[v] == 'P'){ Es[v].push_back(u); }else if (S[v] == 'C'){ Es[u].push_back(v); } }else if (S[u] == 'C'){ if (S[v] == 'D'){ Es[v].push_back(u); }else if (S[v] == 'A'){ Es[u].push_back(v); } }else if (S[u] == 'A'){ if (S[v] == 'C'){ Es[v].push_back(u); } } } long long ans = 0; for (int p = 0; p < N; ++p){ for (int d: Es[p]){ for (int c: Es[d]){ (ans += Es[c].size()) %= mod; } } } cout << ans << endl; return 0; }