D_L3

test 7 - 2021-2022

Jan 8th, 2024
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. #include <cmath>
  2. #include <cstdio>
  3. #include <vector>
  4. #include <iostream>
  5. #include <algorithm>
  6. #include <unordered_map>
  7. #include <set>
  8. #include <queue>
  9.  
  10. using namespace std;
  11.  
  12. unordered_map<int, vector<pair<int, int>>> graph;
  13. set<int> numbers;
  14.  
  15. bool isPossibleRoute(queue<int>& currRoute) {
  16. auto curr = currRoute.front();
  17. currRoute.pop();
  18. while(!currRoute.empty()){
  19. auto& pairs = graph[curr];
  20. bool isPoss = false;
  21. for(auto pair : pairs){
  22. int to = pair.first;
  23. int dist = pair.second;
  24. if(to == currRoute.front() && numbers.find(dist) == numbers.end()){
  25. isPoss = true;
  26. break;
  27. }
  28. }
  29. if(!isPoss)
  30. return false;
  31. curr = currRoute.front();
  32. currRoute.pop();
  33. }
  34. return true;
  35. }
  36.  
  37. int main() {
  38. int n, m, x, y, w, k, q, l, t;
  39. cin >> n >> m;
  40. for (int i = 0; i < m; i++){
  41. cin >> x >> y >> w;
  42. graph[x].push_back({y, w});
  43. }
  44. cin >> k;
  45. for(int i = 0; i < k; i++){
  46. cin >> x;
  47. numbers.insert(x);
  48. }
  49.  
  50. cin >> t;
  51. for(int i = 0; i < t; i++){
  52. queue<int> currRoute;
  53. cin >> l;
  54. for(int i = 0; i < l; i++){
  55. cin >> q;
  56. currRoute.push(q);
  57. }
  58. cout << isPossibleRoute(currRoute);
  59. }
  60.  
  61.  
  62.  
  63. return 0;
  64. }
  65.  
Advertisement
Add Comment
Please, Sign In to add comment