题解 | #【模板】单源最短路1#

【模板】单源最短路1

http://www.nowcoder.com/questionTerminal/f24504c9ff544f7c808f76693cc34af8


#include<iostream> 
#include<queue> 
#include<map> 
#include<vector> 
#include<algorithm> 
using namespace std; 
map<int,vector<int> > mp; 
int dist[5001]; 
void Dijkstra(int start,int n){ 
    bool ans = false; 
    queue<int> qu; 
    qu.push(start); 
    dist[start] = 0; 
    while(!qu.empty()){ 
        start = qu.front(); 
        qu.pop(); 
        for(int i = 0;i < mp[start].size();++i){ 
            int pos = mp[start][i]; 
            if(dist[pos] == -1){ 
                dist[pos] = dist[start] + 1; 
                if(pos == n){ 
                    ans = true; 
                    break; 
                } 
                qu.push(pos); 
            } 
        } 
        if(ans) 
            break; 
    } 
} 
int main() { 
    int n,m,from,to; 
    cin >> n >> m; 
    for(int i = 1;i <= m;++i){ 
        cin >> from >> to; 
        mp[from].push_back(to); 
        mp[to].push_back(from); 
    } 
    for (int i = 0 ; i <= 5000 ; i ++)
        dist[i] = -1;  
    Dijkstra(1,n); 
    cout << dist[n]; 
}
全部评论
赞代码写得很清楚,只是有一个疑问,这应该是bfs吧?
1 回复 分享
发布于 2022-06-06 10:30

相关推荐

评论
6
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务