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>
- using namespace std;
- unordered_map<int, vector<int>> graph;
- int getValue(int a, vector<bool>& visited, vector<int>& result) {
- result[a] = 0;
- for (int neightbour : graph[a]) {
- result[a] += (getValue(neightbour, visited, result) + neightbour);
- }
- visited[a] = true;
- return result[a];
- }
- int main() {
- int m, t, a, b;
- cin >> m >> t;
- int max = 0;
- for (int i = 0; i < m; i++) {
- cin >> a >> b;
- graph[a].push_back(b);
- max = std::max(a, std::max(b, max));
- }
- vector<bool> visited(max+1, false);
- vector<int> result(max + 1);
- for (int i = 0; i < t; i++) {
- cin >> a;
- if (!visited[a])
- getValue(a, visited, result);
- cout << result[a] << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment