Advertisement
IzhanVarsky

Untitled

May 2nd, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. #include <fstream>
  2. //#include <iostream>
  3. #include <vector>
  4. #include <set>
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9. int main() {
  10. ifstream cin("problem2.in");
  11. ofstream cout("problem2.out");
  12. string s;
  13. vector<vector<pair<int, char>>> sost;
  14. vector<bool> isTermin;
  15. int n, m, k;
  16. cin >> s;
  17. cin >> n >> m >> k;
  18. sost.resize(n + 1);
  19. isTermin.resize(n + 1);
  20. for (int i = 0; i < k; ++i) {
  21. int q;
  22. cin >> q;
  23. isTermin[q] = true;
  24. }
  25. for (int i = 0; i < m; ++i) {
  26. int a, b;
  27. char c;
  28. cin >> a >> b >> c;
  29. sost[a].push_back(make_pair(b, c));
  30. }
  31. vector<set<int>> d(s.length() + 1); // в каких состояниях можем оказаться на i шаге
  32. d[0].insert(1);
  33. for (int i = 1; i <= s.length(); ++i) { // будем заполнять d[i]
  34. for (auto j : d[i - 1]) { // пробежимся по d[i - 1]
  35. for (auto q : sost[j]) {
  36. if (s[i - 1] == q.second) {
  37. d[i].insert(q.first);
  38. }
  39. }
  40. }
  41. }
  42. bool wasAns = false;
  43. for (auto i : d[s.length()]) {
  44. if (isTermin[i]){
  45. cout << "Accepts";
  46. wasAns = true;
  47. break;
  48. }
  49. }
  50. if (!wasAns) cout << "Rejects";
  51. return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement