题解[AHOI2002]哈利·波特与魔法石

题目传送门
这是一道很经典的最短路问题

因为数据范围较小,所以不用邻接表的SPFA也不会MLE

#include<bits/stdc++.h>
using namespace std;
int a[120][120];
//a[i][j]代表从i到j的路程(-1表示没路)
int h[8] = {0,2,6,4,8,6,10,14};
//h代表每种地形所需时间
queue<int> q; //队列
int s,e;//起点和终点
int dis[120]; //dis[i]代表点i到起点的最短时间
bool used[120] = {0}; //防止元素重复入队
int main(){
    memset(a,-1,sizeof(a));
    memset(dis,-1,sizeof(dis));
    bool flag;
    for(int i = 1;i<=7;i++){
        scanf("%d",&flag);
        if(flag==1)h[i]/=2;
    }//如果有魔法石则时间减半
    scanf("%d%d",&s,&e);
    int n;
    scanf("%d",&n);
    int ai,bi,ti;
    for(int i = 1;i<=n;i++){
        scanf("%d%d%d",&ai,&bi,&ti);
        a[ai][bi] = h[ti];
        a[bi][ai] = h[ti];
        //注意是无向图,要建立双向边(如果不建立双向边只有20分,我为此提交了4遍才过)
    }
    q.push(s);
    //起点入队
    dis[s] = 0;
    while(!q.empty()){ // 裸的SPFA
        int nw = q.front();
        for(int i = 1;i<=101;i++){
            if(a[nw][i]==-1)continue;
            int rd = dis[nw]+a[nw][i];//rd为经过nw到a的最短时间
            if(dis[i]==-1){ //如果这个点是第一次搜索到
                dis[i] = rd;
                q.push(i);
                used[i] = 1;
            }else{ //否则比较dis[i]和rd大小
                if(dis[i]<=rd)continue;
                dis[i] = rd;
                if(!used[i]){
                    q.push(i);
                    used[i] = 1;
                }
            }
        }
        q.pop();
        used[nw] = 0;
    }
    printf("%d",dis[e]);
    //输出终点到起点的最短时间
    return 0;
}

原文地址:https://www.cnblogs.com/LJA001100/p/10359572.html

时间: 2024-10-03 01:37:27

题解[AHOI2002]哈利·波特与魔法石的相关文章

洛谷 P2559 [AHOI2002]哈利&#183;波特与魔法石

P2559 [AHOI2002]哈利·波特与魔法石 题目描述 输入输出格式 输入格式: 文件中第一行有七个数,分别是 S1. S2 . …. S7 :第二行有两个数,依次分别是起点城市 i 和终点城市 j :第三行有一个正整数 c ,c<=10000, 表示随后的 c 行中每行存放了一对能直接通达的城市的信息. 能直接通达的城市的信息由三个数组成, 依次分别是两个城市的编号和这两个城市之间的地形.城市的编号都是不超过 100 的正整 数, 但是各个城市的编号未必连续. 文件里同一行中相邻的两个数

哈利.波特读后感

前几天刚刚读完了罗琳老师的HP系列,稍有感触,所以写一篇读后感来直抒己见. 第一次听说HP系列是很久很久以前的事了,当时年纪不大,所以并没有关注这部经典的著作.为什么是经典之作呢,个人认为不仅仅是因为作者超脱现实的缤纷多彩的魔法世界,也不仅是因为故事剧情引人入胜,更多的是包含于故事字里行间的作者哲学思想.一本书的灵魂往往是它所想要展现在读者面前的意境,而罗琳老师毫无疑问在她这部作品中倾注的"'灵魂"是十分真挚而吸引人的. 本来刚刚接触是死亡圣器电影开播的时候,好奇的关注了一下,发现八本

10喵哈哈村的魔法石

题目传送: 描述 传说喵哈哈村有三种神奇的魔法石:第一种魔法石叫做人铁石,拥有A的能量:第二种魔法石叫做地冈石,拥有B的能量:而第三种,则是最神奇的天玄石,拥有无可比拟的C的能量! 但是有一天,沈宝宝太调皮了,把一颗天玄石玩丢了-- "这可玩大发了,这样我会被天行廖责备的."沈宝宝悲伤的说到,"怎么办呢?" 这时候沈宝宝望了望窗外的飞过的白鸽,突然急中生智,想到了一个办法:干脆就用人铁石和地冈石把天玄石凑出来吧! "只要我拿若干个人铁石,若干个地冈石,他们

魔法石之恋

[问题描述] 在<Harry Potter and the Sorcerer's Stone>中,想得到魔法石,必须要通过许许多多的测试和游戏.现在阿不思·邓布利多认为这些游戏都具有魔法力,魔法师们能够轻松的通过,我们要增加一些只能够通过智力解决的题目,需要真正的聪明人才能够通过.现在由于我们敬爱的Harry Potter同学时间有限,需要你的帮助,请你帮助他来解决这个问题.必须要在伏地魔之前得到魔法石,这样才能够保护魔法界的安全. 游戏的规则如下: 现有一游戏,玩它时将会有方块有顺序的从屏幕

6-07. 哈利&#183;波特的考试(25) (ZJU_PAT Floyd)

题目链接:http://www.patest.cn/contests/ds/6-07 哈利·波特要考试了,他需要你的帮助.这门课学的是用魔咒将一种动物变成另一种动物的本事.例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等.反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫.另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠.老鼠变鱼的魔咒连起来念:hahahehe. 现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能

魔法石的诱惑

题目描述: 修罗王远远地看见邪狼狂奔而来,问道:“慌慌张张的跑什么?”邪狼大口大口的喘气:“我路过一家魔法石店,看到摆着那么多高阶魔法石,我就跑进去抢了一大袋.”修罗王怒道:“光天化日,朗朗乾坤,众目睽睽之下,你也敢抢?”邪狼:“我抢魔法石的时候,压根就没看见人,眼里只看见魔法石了”修罗王:“……” 其实邪狼的贪婪很容易理解,因为高阶魔法石有一个特征,即它的重量进行阶乘运算后末尾有几个0,就拥有同等重量的普通魔法石几倍的魔法力.例如5!=5*4*3*2*1=120,而120结尾包含1个零,这意味

RQNOJ魔法石之恋

魔法石之恋 (stone.pas/c/cpp) [问题描述] 在<Harry Potter and the Sorcerer's Stone>中,想得到魔法石,必须要通过许许多多的测试和游戏.现在阿不思·邓布利多认为这些游戏都具有魔法力,魔法师们能够轻松的通过,我们要增加一些只能够通过智力解决的题目,需要真正的聪明人才能够通过.现在由于我们敬爱的Harry Potter同学时间有限,需要你的帮助,请你帮助他来解决这个问题.必须要在伏地魔之前得到魔法石,这样才能够保护魔法界的安全. 游戏的规则如

《哈利&#183;波特》作者曾有&quot;自杀念头&quot;

2008年3月24日 格林尼治标准时间10:53更新 <哈利·波特>作者曾有"自杀念头" <哈利·波特>(Harry Potter)系列小说的作者JK·罗琳(JK Rowling)说,她当年作为单身母亲艰苦奋斗的时候,曾因抑郁症而想过自杀. 罗琳说,她与前夫.葡萄牙记者豪尔赫·安提斯分手后,情绪低落,患上了抑郁症,一度产生过"自杀的念头",医生当时让她接受了认知行为疗法的治疗. 现在,42岁的罗琳是世界上最富有的女性之一,她拥有的财富估计在5

07-图4 哈利&#183;波特的考试

题目: 07-图4 哈利·波特的考试   (25分) 哈利·波特要考试了,他需要你的帮助.这门课学的是用魔咒将一种动物变成另一种动物的本事.例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等.反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫.另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠.老鼠变鱼的魔咒连起来念:hahahehe. 现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物.老师允许他自己带一只动