class Solution {
public:
int dfs(int root,vector<vector<int>>& g,vector<int>& vis,vector<int>& nodeCount,long long& ans,int& seats){
vis[root] = 1;
for(auto i:g[root]){
if(vis[i] != 1)nodeCount[root] += dfs(i,g,vis,nodeCount,ans,seats);
}
if(root!=0){
ans += nodeCount[root]/seats;
if(nodeCount[root] % seats) ans+=1;
}
return nodeCount[root];
}
long long minimumFuelCost(vector<vector<int>>& roads, int seats) {
long long ans = 0;
int n = roads.size() + 1;
vector<vector<int>> g(n);
vector<int> vis(n,-1);
vector<int> nodeCount(n,1);
for(auto r:roads){
g[r[0]].push_back(r[1]);
g[r[1]].push_back(r[0]);
}
dfs(0,g,vis,nodeCount,ans,seats);
return ans;
}
};
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter