关注
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; }
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 对2025年忏悔 #
1285次浏览 18人参与
# 联影求职进展汇总 #
165106次浏览 831人参与
# 实习没人带,苟住还是跑路? #
6848次浏览 150人参与
# 非技术岗简历怎么写 #
274804次浏览 3168人参与
# 元旦假期你打算怎么过 #
4567次浏览 118人参与
# 春招前还要继续实习吗? #
1563次浏览 26人参与
# 你做过哪些dirty work #
25051次浏览 155人参与
# 妈妈治愈了你哪些脆皮时刻 #
38401次浏览 338人参与
# 面试官问过你最刁钻的问题是什么? #
3550次浏览 54人参与
# 大家实习都在做什么? #
5980次浏览 60人参与
# 一人说一家双休的公司 #
3550次浏览 55人参与
# 毕业论文怎么查AI率 #
70114次浏览 1941人参与
# 运营面经 #
148946次浏览 1329人参与
# 我来点评面试官 #
37654次浏览 163人参与
# 我们是不是被“优绩主义”绑架了? #
6495次浏览 215人参与
# 实习/项目/竞赛奖项,哪个对找工作更重要? #
102523次浏览 1185人参与
# 牛客2025仙途报告 #
28912次浏览 376人参与
# 职场中对你有帮助的书 #
25703次浏览 216人参与
# 查收我的offer竞争力报告 #
264346次浏览 1650人参与
# 面试等了一周没回复,还有戏吗 #
192017次浏览 1660人参与
传音控股公司福利 360人发布