/*

枚举每一个城市作为宴会地点 然后构图  图中不能有比这个城市价格更高的点、

*/

#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
#define INF 1<<30
using namespace std;
int c,r,q;
int val[100],cost[100],dp[100][100];

struct Edge
{
    int from,to,dist;
};
struct Node
{
    int u;
};
vector<Edge> edges,te;
vector<int> G[10100*2];
int add(int u,int v,int w)
{
    edges.push_back((Edge)
    {
        u,v,w
    });
    //int l = edges.size();
    //G[u].push_back(l-1);
}
int add1(int u,int v,int w)
{
    te.push_back((Edge)
    {
        u,v,w
    });
    int l = te.size();
    G[u].push_back(l-1);
}
int build(int s)
{
    for(int i = 1; i <= c; i++)
        G[i].clear();
    te.clear();
    for(int i = 0; i < edges.size(); i++)
    {
        Edge &e = edges[i];
        if(val[e.from]<=val[s]&&val[e.to]<=val[s])
        {
            add1(e.from,e.to,e.dist);
            add1(e.to,e.from,e.dist);
        }
    }
}
int bfs(int s,int *cost)
{
    for(int i = 1; i <= c; i++)
        cost[i] = INF;
    queue<Node> Q;
    while(!Q.empty())
        Q.pop();
    Node t;
    t.u = s;
    cost[s] = 0;
    Q.push(t);
    while(!Q.empty())
    {
        t = Q.front();
        Q.pop();
        for(int i = 0; i < G[t.u].size(); i++)
        {
            Edge &e = te[G[t.u][i]];
            if(cost[e.to] > cost[t.u] + e.dist)
            {
                cost[e.to] = cost[t.u] + e.dist;
                Q.push((Node)
                {
                    e.to
                });
            }
        }
    }
}
int main()
{
    int count=1;
    while(scanf("%d%d%d",&c,&r,&q)==3)
    {
        if(!c&&!r&&!q) return 0;
        if(count>1) puts("");
        printf("Case #%d\n",count++);

for(int i = 1; i <= c; i++)
            G[i].clear();
        edges.clear();
        for(int i = 1; i <= c; i++)
            scanf("%d",&val[i]);
        int u,v,w;
        for(int i = 0; i < r; i++)
        {
            scanf("%d%d%d",&u,&v,&w);
            add(u,v,w);
            //add(v,u,w);
        }
        for(int j = 1; j <= c; j++)
            for(int k = 1; k <= c; k++)
                if(j == k) dp[j][k] = 0;
                else dp[j][k] = INF;
        for(int i = 1; i <= c; i++)
        {
            build(i);
            bfs(i,cost);
            //printf("%d=------------\n",i);
            for(int j = 1; j <= c; j++)
                for(int k = 1; k <= j; k++)
                {
                    if(j!=k&&cost[j]!=INF&&cost[k]!=INF)
                    {
                        int temp = val[i]+cost[j]+cost[k];
                        //printf("%d ,%d %d\n",j,k,temp);
                        if(dp[j][k]>temp)
                        {
                            dp[k][j] = dp[j][k] = temp;
                        }
                    }
                }
        }
        while(q--)
        {
            scanf("%d%d",&u,&v);
            if(dp[u][v]!=INF)
                printf("%d\n",dp[u][v]);
            else printf("-1\n");
        }
    }
    return 0;
}

10246 - Asterix and Obelix相关推荐

  1. Asterix and Obelix

    uva10246:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&am ...

  2. 【CodeForces】CF126B Password

    题目地址: https://www.luogu.com.cn/problem/CF126B 题面翻译: Asterix,Obelix和他们的临时伙伴Suffix.Prefix已经最终找到了和谐寺.然而 ...

  3. uva 10256 The Great Divide

    原题: Somewhere in Gaul, there is a little village very like the village where Asterix and Obelix live ...

  4. 2023-01-06做题记录

    牛客网小白月赛65 A-牛牛去购物 题目描述 牛牛带着 n 元钱去超市买东西,超市一共只有两款商品,价格为 a 元的篮球和价格为 b 元的足球,牛牛想把手里的钱尽可能花光,请问牛牛最少能剩多少钱? 输 ...

  5. 分析软件——ADS-B和雷达Asterix数据分析处理软件GAEAnalyzer

    1. 软件介绍 GAEAnalyzer是一款对雷达和ADS-B的ASTERIX数据进行解析.检查.记录.回放.分析的工具软件,并能够解析BDS数据. 2. 性能特点: Ø  支持的数据格式:CAT 0 ...

  6. ADS-B Asterix Cat021数据模拟器GAESimulator

    1. 设备简介 GAESimulator是一款Asterix数据模拟器,目前支持Asterix Cat021 ADS-B模拟数据的输出,可订制雷达Asterix模拟数据的输出. 可以生成多个模拟飞机航 ...

  7. 深度强化学习中Double DQN算法(Q-Learning+CNN)的讲解及在Asterix游戏上的实战(超详细 附源码)

    需要源码和环境搭建请点赞关注收藏后评论区留下QQ~~~ 一.核心思想 针对DQN中出现的高估问题,有人提出深度双Q网络算法(DDQN),该算法是将强化学习中的双Q学习应用于DQN中.在强化学习中,双Q ...

  8. ASTERIX CAT021、CAT048标准和Python解码模块

    Asterix cat021标准 Asterix cat048标准 Asterix标准的Python解码模块

  9. python使用函数的目的_在函数参数中使用裸asterix的目的是什么?

    PEP 3102很清楚地解释了基本原理:关键是允许函数接受本质上正交的各种"选项".指定这些位置在定义和调用方面都很尴尬,因为它们没有任何明显的"优先级"可以转 ...

  10. 关于Spring Quartz中的*号(wildcard, asterix )和?号(question mark)的不同

    查了一些文章,有的说「*」代表所有值,「?」代表不确定的值,你不想设置的值. 但不想设置和代表所有什么不同呢,在我看来一样. Quartz官方文档是这么说的: http://www.quartz-sc ...

最新文章

  1. opencv视频处理和检测学习总结
  2. JavaScript一些常用 API整理汇总
  3. 【蓝桥杯省赛】冲刺练习题【动态规划】倒计时【08】天
  4. 东莞市初中生中考计算机内容,2019年广东东莞市中考考试科目及内容
  5. Scala _10Actor Model
  6. java testwhileidle_DBCP踩坑(二):连接池检查testWhileIdle失效
  7. zabbix中mysql连不上的排错_zabbix监控软件的使用排错
  8. 搭建内网yum服务器
  9. Linux之网络管理(6)ip及路由相关命令
  10. 剑指offer面试题09. 用两个栈实现队列(队列、栈)
  11. Spark笔记整理(一):spark单机安装部署、分布式集群与HA安装部署+spark源码编译...
  12. oracle 常用统计函数,Oracle常用的统计函数
  13. 自定义百度网盘分享密码提取码
  14. IntelliJ IDEA插件-翻译插件
  15. 录音怎么转换成mp3格式?
  16. 网页的背景颜色变化效果
  17. 04、CONSTANT-ROUND CZK PROOFS for NP--Alon Rosen[对于NP的常数轮CZK证明]
  18. 矩阵求逆 —— 初等变换法(高斯-约旦消元)
  19. 解决Error:L6218E:Undefined symbol TimingDelay_Decrement (referred from stm32f2xx_it.o)问题
  20. 一周速递|全球车联网产业动态(2022年10月16日)

热门文章

  1. Tourist Behaviour Themes and Conceptual Schemes--Chapter 1 Studying Tourist Behaviour
  2. 【Zabbix】Zabbix网络自动发现
  3. 考察交互的方差分析与简单效应分析(附带操作数据)
  4. 【论文泛读】Don‘t Stop Pretraining: Adapt Language Models to Domains and Tasks
  5. mysql mpm_zabbix+mysql mpm监控
  6. matlab电磁铁磁场,Matlab在电磁铁设计计算中的应用
  7. 懂点excel作图, 怎么让pyechart作的图更具“职场范“呢?丨pyechart工作作图模板
  8. 磁导航组成与基本原理
  9. nodeJS中express+busboy实现文件上传
  10. 多通道ECG心率监测系统