結果
問題 | No.762 PDCAパス |
ユーザー |
|
提出日時 | 2018-12-10 00:36:29 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 25 ms / 2,000 ms |
コード長 | 754 bytes |
コンパイル時間 | 519 ms |
コンパイル使用メモリ | 32,128 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-16 15:41:43 |
合計ジャッジ時間 | 1,942 ms |
ジャッジサーバーID (参考情報) |
judge6 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 38 |
ソースコード
#include <stdio.h> int n, m; char s[100001]; int us[100000], vs[100000]; long long f[100000]; int main() { scanf("%d %d %s", &n, &m, s); for (int i = 0; i < m; i++) { scanf("%d %d", us + i, vs + i); us[i]--; vs[i]--; if (s[us[i]] == 'P' && s[vs[i]] == 'D') f[vs[i]]++; if (s[vs[i]] == 'P' && s[us[i]] == 'D') f[us[i]]++; if (s[us[i]] == 'C' && s[vs[i]] == 'A') f[us[i]]++; if (s[vs[i]] == 'C' && s[us[i]] == 'A') f[vs[i]]++; } long long ans = 0; for (int i = 0; i < m; i++) { if (s[us[i]] == 'D' && s[vs[i]] == 'C') ans += f[us[i]] * f[vs[i]]; if (s[vs[i]] == 'D' && s[us[i]] == 'C') ans += f[vs[i]] * f[us[i]]; } printf("%lld\n", ans % 1000000007); }