Skip to content

Commit 4d61a6b

Browse files
authored
Create 2065.Maximum-Path-Quality-of-a-Graph.cpp
1 parent 63f8056 commit 4d61a6b

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
class Solution {
2+
int ret = 0;
3+
int maxTime;
4+
vector<pair<int,int>>next[1000];
5+
int visited[1000];
6+
vector<int>values;
7+
public:
8+
int maximalPathQuality(vector<int>& values, vector<vector<int>>& edges, int maxTime)
9+
{
10+
this->maxTime = maxTime;
11+
this->values = values;
12+
13+
int n = values.size();
14+
for (auto edge: edges)
15+
{
16+
int a = edge[0], b = edge[1], t = edge[2];
17+
next[a].push_back({b,t});
18+
next[b].push_back({a,t});
19+
}
20+
21+
visited[0] = 1;
22+
dfs(0, values[0], 0);
23+
return ret;
24+
}
25+
26+
void dfs(int cur, int totalVal, int totalTime)
27+
{
28+
if (totalTime > maxTime) return;
29+
if (cur==0) ret = max(ret, totalVal);
30+
31+
for (auto x: next[cur])
32+
{
33+
int nxt = x.first, t = x.second;
34+
visited[nxt]++;
35+
dfs(nxt, totalVal + (visited[nxt]==1?values[nxt]:0), totalTime+t);
36+
visited[nxt]--;
37+
}
38+
}
39+
};

0 commit comments

Comments
 (0)