Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cmath>
- #include <cstdio>
- #include <vector>
- #include <iostream>
- #include <algorithm>
- #include <unordered_map>
- #include <set>
- #include <queue>
- using namespace std;
- unordered_map<int, vector<pair<int, int>>> graph;
- set<int> numbers;
- bool isPossibleRoute(queue<int>& currRoute) {
- auto curr = currRoute.front();
- currRoute.pop();
- while(!currRoute.empty()){
- auto& pairs = graph[curr];
- bool isPoss = false;
- for(auto pair : pairs){
- int to = pair.first;
- int dist = pair.second;
- if(to == currRoute.front() && numbers.find(dist) == numbers.end()){
- isPoss = true;
- break;
- }
- }
- if(!isPoss)
- return false;
- curr = currRoute.front();
- currRoute.pop();
- }
- return true;
- }
- int main() {
- int n, m, x, y, w, k, q, l, t;
- cin >> n >> m;
- for (int i = 0; i < m; i++){
- cin >> x >> y >> w;
- graph[x].push_back({y, w});
- }
- cin >> k;
- for(int i = 0; i < k; i++){
- cin >> x;
- numbers.insert(x);
- }
- cin >> t;
- for(int i = 0; i < t; i++){
- queue<int> currRoute;
- cin >> l;
- for(int i = 0; i < l; i++){
- cin >> q;
- currRoute.push(q);
- }
- cout << isPossibleRoute(currRoute);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment