Advertisement
AlexGo11

Untitled

Jan 4th, 2020
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.93 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n, m, k;
  4. const int MOD = 1e9 + 7;
  5. vector < bool > is_terminal;
  6. vector < vector < pair < int , char > > > g;
  7. int ans = 0;
  8.  
  9. void bfs() {
  10.     queue < pair < int, int > > q;
  11.     q.push({0, 0});
  12.     while (!q.empty()) {
  13.         auto e = q.front();
  14.         q.pop();
  15.         if (e.second == k && is_terminal[e.first]) {
  16.             ans = (ans + 1) % MOD;
  17.         } else {
  18.             int v = e.first;
  19.             int s = e.second;
  20.             for (auto t : g[v]) {
  21.                 q.push({t.first, s + 1});
  22.             }
  23.         }
  24.     }
  25.     cout << ans;
  26. }
  27.  
  28. int main() {
  29.     freopen("numwords.in", "r", stdin);
  30.     freopen("numwords.out", "w", stdout);
  31.     cin >> n >> m;
  32.     is_terminal.resize(n, false);
  33.     g.resize(n);
  34.     for (int i = 0; i < m; i++) {
  35.         int a, b;
  36.         char c;
  37.         cin >> a >> c >> b;
  38.         a--; b--;
  39.         g[a].push_back({b, c});
  40.     }
  41.     int t;
  42.     cin >> t;
  43.     for (int i = 0; i < t; i++) {
  44.         int e;
  45.         cin >> e;
  46.         e--;
  47.         is_terminal[e] = true;
  48.     }
  49.     cin >> k;
  50.     bfs();
  51.     return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement