結果

問題 No.762 PDCAパス
ユーザー rpy3cpp
提出日時 2019-05-10 19:59:55
言語 C++14
(gcc 9.2.0)
結果
AC  
実行時間 72 ms
コード長 1,183 Byte
コンパイル時間 3,124 ms
使用メモリ 7,648 KB
最終ジャッジ日時 2020-01-20 10:28:16

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
0sample1.txt AC 0 ms
3,272 KB
0sample2.txt AC 4 ms
3,224 KB
0sample3.txt AC 0 ms
3,268 KB
1ddcc.txt AC 0 ms
3,228 KB
1ppap.txt AC 4 ms
3,276 KB
1tiny0.txt AC 0 ms
3,168 KB
1tiny1.txt AC 0 ms
3,224 KB
1tiny2.txt AC 4 ms
3,220 KB
2simple0.txt AC 0 ms
3,220 KB
2simple1.txt AC 0 ms
3,180 KB
2simple2.txt AC 4 ms
3,220 KB
2simple3.txt AC 0 ms
3,264 KB
2simple4.txt AC 0 ms
3,292 KB
2simple5.txt AC 4 ms
3,272 KB
2simple6.txt AC 0 ms
3,256 KB
3complex0.txt AC 4 ms
3,220 KB
3complex1.txt AC 0 ms
3,224 KB
4random1.txt AC 0 ms
3,256 KB
4random2.txt AC 4 ms
3,276 KB
4random3.txt AC 0 ms
3,200 KB
4random4.txt AC 0 ms
3,180 KB
4random5.txt AC 4 ms
3,264 KB
5test1_1.txt AC 28 ms
3,388 KB
5test1_2.txt AC 28 ms
3,424 KB
5test2_1.txt AC 32 ms
7,648 KB
5test2_2.txt AC 32 ms
7,644 KB
5test3_1.txt AC 72 ms
3,600 KB
5test3_2.txt AC 72 ms
3,608 KB
6random11.txt AC 28 ms
6,276 KB
6random12.txt AC 32 ms
6,224 KB
6random21.txt AC 28 ms
5,480 KB
6random22.txt AC 28 ms
5,412 KB
6random23.txt AC 28 ms
5,412 KB
6random31.txt AC 24 ms
5,004 KB
6random32.txt AC 24 ms
4,964 KB
6random33.txt AC 28 ms
4,952 KB
6random41.txt AC 24 ms
3,720 KB
6random42.txt AC 24 ms
3,704 KB
6random43.txt AC 20 ms
3,752 KB
6random44.txt AC 24 ms
3,712 KB
6random45.txt AC 24 ms
3,632 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