結果

問題 No.762 PDCAパス
ユーザー rpy3cpp
提出日時 2019-05-10 19:59:55
言語 C++14
(gcc 8.3.0)
結果
AC  
実行時間 73 ms
コード長 1,183 Byte
コンパイル時間 1,681 ms
使用メモリ 8,924 KB
最終ジャッジ日時 2019-09-12 01:55:46

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
0sample1.txt AC 4 ms
6,876 KB
0sample2.txt AC 3 ms
6,872 KB
0sample3.txt AC 5 ms
6,876 KB
1ddcc.txt AC 4 ms
6,876 KB
1ppap.txt AC 4 ms
6,872 KB
1tiny0.txt AC 4 ms
6,876 KB
1tiny1.txt AC 3 ms
6,876 KB
1tiny2.txt AC 4 ms
6,876 KB
2simple0.txt AC 4 ms
6,876 KB
2simple1.txt AC 3 ms
6,872 KB
2simple2.txt AC 3 ms
6,872 KB
2simple3.txt AC 3 ms
6,872 KB
2simple4.txt AC 3 ms
6,872 KB
2simple5.txt AC 4 ms
6,876 KB
2simple6.txt AC 2 ms
6,876 KB
3complex0.txt AC 4 ms
6,876 KB
3complex1.txt AC 4 ms
6,876 KB
4random1.txt AC 3 ms
6,876 KB
4random2.txt AC 4 ms
8,920 KB
4random3.txt AC 4 ms
8,924 KB
4random4.txt AC 4 ms
6,876 KB
4random5.txt AC 4 ms
6,872 KB
5test1_1.txt AC 30 ms
6,872 KB
5test1_2.txt AC 31 ms
6,872 KB
5test2_1.txt AC 42 ms
6,876 KB
5test2_2.txt AC 40 ms
6,872 KB
5test3_1.txt AC 73 ms
6,872 KB
5test3_2.txt AC 73 ms
6,876 KB
6random11.txt AC 36 ms
6,876 KB
6random12.txt AC 36 ms
6,876 KB
6random21.txt AC 35 ms
6,872 KB
6random22.txt AC 33 ms
8,920 KB
6random23.txt AC 35 ms
8,920 KB
6random31.txt AC 32 ms
6,876 KB
6random32.txt AC 31 ms
6,872 KB
6random33.txt AC 33 ms
6,872 KB
6random41.txt AC 28 ms
6,876 KB
6random42.txt AC 27 ms
6,876 KB
6random43.txt AC 27 ms
6,872 KB
6random44.txt AC 27 ms
6,872 KB
6random45.txt AC 23 ms
6,872 KB
テストケース一括ダウンロード

ソースコード

diff #
#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;
}
0