文章

40

粉丝

512

获赞

13

访问

372.3k

头像
把树看成图,用邻接表的广度优先搜索求解单源最短路
Ang VIP
P1654 北京邮电大学2019年机试题
发布于2020年3月10日 18:57
阅读数 8.9k

#include<bits/stdc++.h>

using namespace std;

vector<vector<int> > t(510);

int bfs(int a, int b){
    vector<bool> vis(510,false);   //每条边的权值都是1,直接用二维数组存。本来是还有存一个len的,现在不用了,就直接二维数组
    queue<int> q;
    q.push(a);
    vis[a]=true;
    int level=0;
    while(!q.empty()){
        int k=q.size();
        for(int i=0;i<k;i++){
            int temp = q.front();
            q.pop();
            for(int i=0;i<t[temp].size();i++){
                int next = t[temp][i];
                if(next==b){
                    return level+1;
                }
                if(vis[next]==false){
                    vis[next]=true;
                    q.push(next);
                }
            }
        }
        level++;
    }
}

int main(){
    int T;
    cin>>T;
    while(T--){
        int n,m;
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            int t1,t2;
            cin>>t1>&...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发