[dijkstra] 小木乃伊到我家 长沙理工大学校赛E

21人阅读 评论(0) 收藏 举报
分类:

链接:https://www.nowcoder.com/acm/contest/96/E

题目描述

  AA的欧尼酱qwb是个考古学家,有一天qwb发现了只白白圆圆小小的木乃伊,它是个爱哭鬼却很努力。qwb想把这么可爱的小木乃伊送给
AA,于是便找上了快递姐姐,这下可让快递姐姐犯愁了,因为去往AA家的路实在太难走了(甚至有可能没有路能走到AA家),快递姐姐
找上聪明的ACMer,想请你帮忙找出最快到达AA家的路,你行吗?

输入描述:

第一行输入两个整数n和m(2<=n<=m<=200000),分别表示有n座城市和m条路,城市编号为1~n(快递姐姐所在城市为1,AA所在城市为n)。
接下来m行,每行输入3个整数u,v,w(u,v<=n,w<=100000),分别表示城市u和城市v之间有一条长为w的路。

输出描述:

输出结果占一行,输出快递姐姐到达AA家最短需要走多远的路(及最短路条数),如果没有路能走到AA家,则输出“qwb baka”(不用输出双引号)。


//dijkstra算法的优化:结合向量及优先队列

#include <bits/stdc++.h>
using namespace std;
int po[200000];
struct way
{
    int to;long long int cost;
};//记录vec[起点]的 多个 终点及边长
struct Node
{
    int hao;long long int lu;
};//用于优先队列排序
vector<way>vec[200001];  
long long int d[200001];  //记录各点最短路
bool operator <(Node a,Node b)
{
    return a.lu>b.lu;
}  //优先队列优先级 符号相反
priority_queue<Node>que;
void dij()
{
    while(!que.empty())
    {
        Node e=que.top();que.pop();  //当前最短点的信息
        int L=vec[e.hao].size();   //与e.hao连接的路径数
        for(int i=0;i<L;i++)
        {
            way r=vec[e.hao][i];  //依次取出点及其信息
            if(d[r.to]>d[e.hao]+r.cost)  //更新最短路
            {
                d[r.to]=d[e.hao]+r.cost;
                Node q;q.hao=r.to;q.lu=d[r.to];
                po[r.to]=po[e.hao];  //更新最短路 最短路条数与e.hao最短路条数相同
                que.push(q);
            }
            else if(d[r.to]==d[e.hao]+r.cost) //相同时
            {
                po[r.to]+=po[e.hao];  //增加最短路条数
            }
        }
    }
}
int main()
{
    int n,m;cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        way w,y;long long int a,b,c;
        cin>>a>>b>>c;
        w.to=b;w.cost=c;
        y.to=a;y.cost=c;
        vec[a].push_back(w);
        vec[b].push_back(y);
        //双向路径 
        //vector 可变数组;二维数组空间超限
    }
    for(int i=2;i<=n;i++) d[i]=1e18;  //求最短,初始设为无穷大
    d[1]=0;  //初始化
    po[1]=1;  //初始路径条数设为1
    Node no;no.hao=1;no.lu=0;
    que.push(no);  //起始点信息
    dij();
    if(d[n]==1e18) cout<<"qwb baka"<<endl;
    else cout<<d[n]<<' '<<po[n]<<endl;
    return 0;
}

查看评论

长沙理工大学2018年第13届校赛我的题解

先贴上我们的代码:那题不懂私聊我吧A:LL 题目描述 “LL是什么?这都不知道的话,别说自己是程序猿啊!”   “longlong?”   “。。。肯定是LoveLive啊!”   qwb为了检验你是...
  • qq_39599067
  • qq_39599067
  • 2018-04-14 20:21:43
  • 132

数学考试---2018年长沙理工大学第十三届程序设计竞赛

题目链接:数学考试 链接:https://www.nowcoder.com/acm/contest/96/H 来源:牛客网 今天qwb要参加一个数学考试,这套试卷一共有n道题,每道题qwb能获得...
  • nhl19961226
  • nhl19961226
  • 2018-04-16 21:23:12
  • 11

2018年长沙理工大学第十三届程序设计竞赛

做完这次比赛,必须要写题解。真的是心态崩了。。第一个水题,一直wa。。。原来没有用gets,cin无法接收空格...记住这个教训吧!!!A    LL链接:https://www.nowcoder.c...
  • sinat_37668729
  • sinat_37668729
  • 2018-04-14 22:10:50
  • 13

2018年长沙理工大学第十三届程序设计竞赛 A B C E L 题解

刚打完五小时的长沙理工校赛,我还是太菜。。。A了四个签到,加上抄过了一道裸板子,一共AC五道,G和H准备这两天抽空补下,补过了再传一下题解,H题思维题,貌似是公式题,G题双重BFS。。。我们ACM的一...
  • EricGipsy
  • EricGipsy
  • 2018-04-14 19:16:10
  • 94

长沙理工大学第十二届ACM大赛 G.跑路ing【暴力】

题目描述 vigoss18 辞职成功终于逃出了公司,但是没过太久,公司就发现vigoss18 的所作所为,于是派人来把他抓 回去。 vigoss18 必须一直跑路,躲避公司的围捕。可以抽...
  • mengxiang000000
  • mengxiang000000
  • 2017-09-03 19:39:08
  • 335

2018年长沙理工大学第十三届程序设计竞赛 D zzq的离散数学教室1(素数表)

点击打开链接 解析: 这里其实就是每一个组合(L,R) R=L*k (k是一个质数),所以我们只要找到i*k 这道题你遍历[L,R]区间即使用了O(nlogn)的算法来做也会T的 这里...
  • qq_37025443
  • qq_37025443
  • 2018-04-14 19:30:32
  • 37

2018年长沙理工大学第十三届程序设计竞赛 A-LL

2018年长沙理工大学第十三届程序设计竞赛 A-LL链接:https://www.nowcoder.com/acm/contest/96/A来源:牛客网题目描述“LL是什么?这都不知道的话,别说自己是...
  • gdut_yy
  • gdut_yy
  • 2018-04-15 10:10:49
  • 37

2018年长沙理工大学第十三届程序设计竞赛 E 小木乃伊到我家 【最短路】

时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 AA的欧尼酱qwb是个考古学家,有...
  • Dup4plz
  • Dup4plz
  • 2018-04-14 19:41:25
  • 40

2017浙江理工大学校赛E题

4270: 同源数 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 756 Solved: 104 Description 如果x和y的质因子...
  • creatorx
  • creatorx
  • 2017-03-20 19:08:56
  • 982

长沙理工大学mac os 校园网客户端

  • 2015年06月21日 11:05
  • 4.54MB
  • 下载
    个人资料
    持之以恒
    等级:
    访问量: 464
    积分: 433
    排名: 11万+
    文章存档