# 2242. Maximum Score of a Node Sequence
{%hackmd theme-dark %}
法國 英國 非洲 中國
[100, 200, 1 , 10...] = scores
[法->英, 法->非,...] = edges
set(0 1 2 ) - 2
0 - 1 - 2 - 3
0 - 5 - 6 - 2 *
0 - 3 - 4
```cpp=
int traverse(int src, vector<int> &scores, unordered_map<int, vector<int>> &graph) {
queue<pair<int, int>> q; // src, score
q.push({src, scores[src]});
vector<bool> visited(scores.size());
int res = 0;
for (int i = 0; i < 4; i++) {
if (q.empty()) {
res = 0;
break;
}
for (int x = q.size(); x > 0; x--) {
auto [dest, score] = q.front();
q.pop();
res = max(res, score);
visited[dest] = true;
for (auto next: graph[dest]) {
if (!visited[next]) {
q.push({next, score[next] + score});
}
}
visited[dest] = false;
}
}
return res;
}
int maxScore(vector<int> &scores, vector<vector<int>> &edges) {
// scores = [100, 200, 300];
// edges = {{src, dest}, {src, dest}, {0, 10}}
unordered_map<int, vector<int>> graph;
for (auto &e: edges) {
graph[edge[0]].push_back(edge[1]);
graph[edge[1]].push_back(edge[0]);
}
// start from every src to get max scores
int res = 0;
for (int i = 0; i < scores.size(); i++) {
res = min(res, traverse(i, scores, graph));
}
return res;
}
a0 - a - b - b0
a1 - - b1
... ...
```
###### tags: `mock interview` `面試`