zoukankan      html  css  js  c++  java
  • 城市路(Dijkstra)

    时间限制:1秒 内存限制:128M
    题目描述

    罗老师被邀请参加一个舞会,是在城市n,而罗老师当前所处的城市为1,附近还有很多城市2~n-1,有些城市之间没有直接相连的路,有些城市之间有直接相连的路,这些路都是双向的,当然也可能有多条。
    现在给出直接相邻城市的路长度,罗老师想知道从城市1到城市n,最短多少距离。

    输入描述

    输入n, m,表示n个城市和m条路;
    接下来m行,每行a b c, 表示城市a与城市b有长度为c的路。

    输出描述

    输出1到n的最短路。如果1到达不了n,就输出-1。

    样例
    输入
    5 5
    1 2 20
    2 3 30
    3 4 20
    4 5 20
    1 5 100
    输出
    90
    提示

    【数据规模和约定】
    1≤n≤2000
    1≤m≤10000
    0≤c≤10000

    不多bb,上代码

    #include<bits/stdc++.h>
    using namespace std;
    int g[2005][2005];
    int n,m;
    int dis[2005];
    bool used[2005];
    int main(){
        memset(g,0x3f,sizeof(g));
        cin>>n>>m;
        for(int i=1;i<=m;++i){
            int a,b,c;
            scanf("%d%d%d",&a,&b,&c);
            g[a][b]=min(g[a][b],c);
            g[b][a]=min(g[b][a],c);
        }
        memset(dis,0x3f,sizeof(dis));
        dis[1]=0;
        for(int i=1;i<=n;++i){
            int minn=0x3f3f3f3f,minn_j=0;
            for(int j=1;j<=n;++j){
                if(used[j]==false&&dis[j]<minn){
                    minn=dis[j];
                    minn_j=j;
                }
            }
            if(minn_j==0)
                break;
            used[minn_j]=true;
            for(int j=1;j<=n;j++)
                if(used[j]==false)
                    dis[j]=min(dis[j],dis[minn_j]+g[minn_j][j]);
        }
        if(dis[n]==0x3f3f3f3f)
        cout<<-1;
        else
        cout<<dis[n];
    }
    

      请大家

    小蒟蒻ΩωΩ I AK IOI.
  • 相关阅读:
    nuxt引入fontawesome
    springboot+springsecurity+vue实现简单的登陆认证
    vue给v-html渲染出的页面添加样式
    vue整合SimpleMDE做编辑器
    vue整合tinymce做富文本编辑器
    vue引入svg图标
    vue刷新整个页面
    解决Vue2.9.6无法卸载的问题
    使用npm命令下载sass时出现Error: not found: python2
    html中好玩的技巧,你知道几个
  • 原文地址:https://www.cnblogs.com/20070618hyz/p/13695179.html
Copyright © 2011-2022 走看看