zoukankan      html  css  js  c++  java
  • 牛客小白月赛6 I 公交线路 最短路 模板题

    链接:https://www.nowcoder.com/acm/contest/136/I
    来源:牛客网

    题目描述

    P市有n个公交站,之间连接着m条道路。P市计划新开设一条公交线路,该线路从城市的东站(s点)修建到西站(t点),请为P市设计一条满足上述条件并且最短的公交线路图。


    输入描述:

    第一行有5个正整数n,m,s,t。

    接下来m行,每行3个数a,b,v描述一条无向道路a——b,长度为v。

    输出描述:

    如果有解,输出一行,表示满足条件的最短公交线路的长度c。

    否则,输出“-1”
    示例1

    输入

    复制
    3 3 1 2
    1 2 3
    2 3 4
    1 3 5

    输出

    复制
    3
    示例2

    输入

    复制
    3 3 1 2
    1 2 5
    2 3 3
    1 3 1

    输出

    复制
    4
    示例3

    输入

    复制
    3 1 1 1
    1 2 1

    输出

    复制
    0

    备注:

    对于100%的测试数据:
    1 ≤ s,t ≤ n ≤ 1000
    1 ≤ m ≤ 10000
    1 ≤ 道路的长度 ≤ 10000

    分析:一个裸的最短路模板题
    搞不懂搞不懂,比赛的时候为什么没有人过这个题?
    这套题目后面的题都好做,卡在前面真的难受
    这榜真的好歪
    AC代码:
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<iostream>
    #include<cmath>
    #include<bits/stdc++.h>
    #define maxn 1010
    using namespace std;
    vector<pair<int,int> >E[maxn];
    int n,m;
    int d[maxn];
    void init()
    {
        for(int i=0;i<maxn;i++)
            E[i].clear();
        for(int i=0;i<maxn;i++)
            d[i]=1e9;
    }
    int main()
    {
        while(cin >> n>> m)
        {
            int s,t;
            scanf("%d%d",&s,&t);
            init();
            for(int i=0;i<m;i++)
            {
                int x,y,z;
                scanf("%d%d%d",&x,&y,&z);
                E[x].push_back(make_pair(y,z));
                E[y].push_back(make_pair(x,z));
            }
            priority_queue<pair<int,int> >Q;
            d[s]=0;
            Q.push(make_pair(-d[s],s));//使得返回最小值,本来是返回最大值
            while(!Q.empty())
            {
                int now = Q.top().second;
                Q.pop();
                for(int i=0;i<E[now].size();i++)
                {
                    int v = E[now][i].first;
                    if(d[v]>d[now]+E[now][i].second)
                    {
                        d[v]=d[now]+E[now][i].second;
                        Q.push(make_pair(-d[v],v));
                    }
                }
            }
            if(d[t]==1e9)
                printf("-1
    ");
            else printf("%d
    ",d[t]);
        }
        return 0;
    }
    

      

    彼时当年少,莫负好时光。
  • 相关阅读:
    【Docker】04 部署MySQL
    【Docker】03 基础操作
    【Nexus】Linux上的Maven私服搭建
    【Mybatis-Plus】01 快速上手
    【Java】IDEA普通JavaEE项目实现SSM整合
    【Vue】03 Slot 插槽 & 自定义事件
    【Vue】02 Component 组件 & Axios
    【Vue】01 基础语法
    【Vue】Vue-Cli 安装
    【Project】JS的Map对象前后交互问题
  • 原文地址:https://www.cnblogs.com/l609929321/p/9525942.html
Copyright © 2011-2022 走看看