【发布时间】:2020-09-02 18:57:18
【问题描述】:
我已经写了 bfs 来寻找到每个其他节点的最短路径:
queue<int> q;
dist[s] = 0; // maintains the distance of vertices from s(source).
q.push(s);
while(!q.empty()){
int src = q.front();
q.pop();
vis[src] = 1; // visited array to keep track of nodes which have been visited
for(int i=0; i<adj[src].size(); i++){ // adj is an adjacency list
if(!vis[adj[src][i]]){
q.push(adj[src][i]);
dist[adj[src][i]] = 6+dist[src];
}
}
}
这会为一些未知的测试用例提供错误的答案和超时。 但是当我这样做时,它通过了所有测试用例:
queue<int> q;
dist[s] = 0;
vis[s] = 1;
q.push(s);
while(!q.empty()){
int src = q.front();
q.pop();
for(int i=0; i<adj[src].size(); i++){
if(!vis[adj[src][i]]){
q.push(adj[src][i]);
dist[adj[src][i]] = 6+dist[src];
vis[adj[src][i]] = 1;
}
}
}
我无法弄清楚为什么会发生这种情况。
问题链接:https://www.hackerrank.com/challenges/bfsshortreach/problem
【问题讨论】:
-
在我看来,您的问题并没有说明您为尝试诊断问题所做的工作,您只是提到“在某些情况下”,但不清楚您在说什么情况关于 - 可能是您不知道那是什么情况 - 即使这样,最好让我们知道“在某些未知的测试用例上它失败了”,而不是只说在某些情况下。
标签: c++ graph-algorithm breadth-first-search