关注
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; }
查看原帖
点赞 评论
相关推荐
04-16 10:50
北京理工大学 前端开发其它 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习生的蛐蛐区 #
1008031次浏览 5134人参与
# 扒一扒那些奇葩实习经历 #
160755次浏览 1183人参与
# 发面经攒人品 #
8905456次浏览 98768人参与
# 应届生第一份工资要多少合适 #
28286次浏览 108人参与
# 27届实习投递记录 #
166657次浏览 1682人参与
# 应届生,你找到工作了吗 #
181031次浏览 914人参与
# 招聘要求与实际实习内容不符怎么办 #
226881次浏览 1077人参与
# 机械人值得去的小众企业 #
38405次浏览 68人参与
# 现在入门AI首先要做什么? #
18342次浏览 145人参与
# 互联网行业现在还值得去吗 #
65735次浏览 380人参与
# 实习最想跑路的瞬间 #
147733次浏览 787人参与
# 面试反问你会问什么 #
213666次浏览 1962人参与
# 机械人,秋招第一次笔试的企业是哪家? #
106977次浏览 715人参与
# 万物皆可发面经 #
5626次浏览 67人参与
# AI了,我在打一种很新的工 #
211747次浏览 2353人参与
# 实习,不懂就问 #
231888次浏览 1771人参与
# 实习教会我的事 #
82311次浏览 521人参与
# 网易求职进展汇总 #
218850次浏览 1542人参与
# 春招前还要继续实习吗? #
72143次浏览 353人参与
# 校招求职有谈薪空间吗 #
234507次浏览 2400人参与

