zoukankan      html  css  js  c++  java
  • [AHOI2002]哈利-波特与魔法石

    题目

    Description

    Input

    • 文件中第一行有七个数,分别是 S1、 S2 、 …、 S7 ;第二行有两个数,依次分别是起点城市 i 和终点城市 j ;第三行有一个正整数 c ,c<=10000, 表示随后的 c 行中每行存放了一对能直接通达的城市的信息。 能直接通达的城市的信息由三个数组成, 依次分别是两个城市的编号和这两个城市之间的地形。城市的编号都是不超过 100 的正整

      数, 但是各个城市的编号未必连续。 文件里同一行中相邻的两个数都是用一个空白字符隔开的。

    Output

    以一行的形式输出起点城市i 与终点城市 j 之间的最快路线所需要的时间。

    Sample Input

    0 1 0 0 0 0 0
    1 4
    4
    1 2 1
    1 3 1
    2 4 2
    3 4 3

    Sample Output

    5

    思路

    可以直接设 $a[x][y]$ 为$x$ 到 $y$ 的距离;

    然后如果这种地形有魔法石,那么 $a[x][y]/=2$ ;

    最后跑一遍 $Floyd$ 就好了;

    代码

    #include<bits/stdc++.h>
    #define re register
    typedef long long ll;
    using namespace std;
    inline ll read()
    {
        ll a=0,f=1; char c=getchar();
        while (c<'0'||c>'9') {if (c=='-') f=-1; c=getchar();}
        while (c>='0'&&c<='9') {a=a*10+c-'0'; c=getchar();}
        return a*f;
    }//快读 
    ll n,m;
    ll s[11];
    ll h[11]={0,2,6,4,8,6,10,14};//处理 时间 
    ll a[101][101];
    int main()
    {
        memset(a,127/3,sizeof(a));
        for(re ll i=1;i<=7;i++)
            s[i]=read(); 
        ll qx=read(),qy=read();
        n=read();
        //读入 
        for(re ll i=1;i<=n;i++)
        {
            ll x=read(),y=read(),z=read();
            if(s[z])
                a[x][y]=a[y][x]=h[z]/2;
            else
                a[x][y]=a[y][x]=h[z];//记下每种地形有无魔法石的时间 
            m=max(m,x);
            m=max(m,y);//n 是边数 n<=10000,所以可以开 m 保存有多少个点 
        }
        for(re ll k=1;k<=m;k++)
        for(re ll i=1;i<=m;i++)
        for(re ll j=1;j<=m;j++)//Floyd 
        {
            if(a[i][k]+a[k][j]<a[i][j])
                a[i][j]=a[i][k]+a[k][j];
        }
        if(qx==qy)//如果起点和终点在同一位置,就不用走 
            puts("0");
        else
            printf("%lld
    ",a[qx][qy]);//输出最短距离
        //return 0; 
    }
  • 相关阅读:
    d3.js了解
    java常用验证码
    连接数据库的配置文件
    MD5加密的使用
    ssm下载文件
    Ajax基于rest风格上传图片
    web常见页面错误整理
    前后端一起用cookie来保存密码
    通用mapper插件
    ssm的maven依赖,直接复制可以使用
  • 原文地址:https://www.cnblogs.com/wzx-RS-STHN/p/13522026.html
Copyright © 2011-2022 走看看