关注
void dfs(vector<int>& signal,vector<bool> & mask, vector<vector<int> > &path, vector<vector<int> >& matrix, int nowNode, int T,int nowTime, int & minValue){ if(nowTime >= minValue) return; if(nowNode == T){ minValue = min(minValue, nowTime); return; } int waitTime = 0; if(nowTime / signal[nowNode] % 2 == 1) { waitTime = signal[nowNode] - nowTime % signal[nowNode]; } nowTime += waitTime; mask[nowNode] = true; for(int i=0;i<path[nowNode].size();i++){ if(!mask[path[nowNode][i]]){ nowTime += matrix[nowNode][path[nowNode][i]]; dfs(signal,mask,path,matrix,path[nowNode][i],T,nowTime,minValue); nowTime -= matrix[nowNode][path[nowNode][i]]; } } mask[nowNode] = false; } int minTravelTime(int N, vector < vector < int > > intersections, int M, vector < vector < int > > roads, int s, int t) { vector<bool> mask(N,false); vector<int> signal(N,0); for(int i=0;i<N;i++){ signal[intersections[i][0]] = intersections[i][1]; } vector<vector<int> > path(N); vector<vector<int> > matrix(N,vector<int>(N,0)); for(int i=0;i<M;i++){ path[roads[i][0]].push_back(roads[i][1]); path[roads[i][1]].push_back(roads[i][0]); matrix[roads[i][0]][roads[i][1]] = roads[i][2]; matrix[roads[i][1]][roads[i][0]] = roads[i][2]; } int result = 0x7fffffff; dfs(signal,mask,path,matrix,s,t,0,result); return result; }
查看原帖
点赞 评论
相关推荐

点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 字节求职进展汇总 #
679938次浏览 6855人参与
# 读研or工作,哪个性价比更高? #
32121次浏览 446人参与
# 携程求职进展汇总 #
188546次浏览 1377人参与
# 牛友故事会 #
193088次浏览 3774人参与
# 讲讲我的真实离职原因 #
27968次浏览 252人参与
# 传音控股求职进展汇总 #
8932次浏览 77人参与
# 元戎现在香不香 #
70734次浏览 645人参与
# 歌尔求职进展汇总 #
48325次浏览 322人参与
# 烟草笔面经互助 #
12057次浏览 165人参与
# 德州仪器求职进展汇总 #
2006次浏览 45人参与
# 你上一次加班是什么时候? #
40959次浏览 295人参与
# 入职以后才知道的校招谎言 #
68541次浏览 450人参与
# 90后北漂现状 #
20567次浏览 186人参与
# 安克创新求职进展汇总 #
20910次浏览 229人参与
# 牛友打假中心 #
9076次浏览 509人参与
# 初创公司值得加入吗? #
15252次浏览 129人参与
# 软开人,秋招你打算投哪些公司呢 #
72507次浏览 804人参与
# 机械只有转码才有出路吗? #
120782次浏览 1570人参与
# 滴滴求职进展汇总 #
117943次浏览 1025人参与
# OPPO求职进展汇总 #
603899次浏览 4821人参与
# 如果公司给你放一天假,你会怎么度过? #
11019次浏览 94人参与
# 实习必须要去大厂吗? #
75699次浏览 1130人参与