zoukankan      html  css  js  c++  java
  • HDU 2586 查找两点之间的距离

    描述

    村里有n个房子和一些双向道路连接。 每天这样的人总是喜欢问“如果我想有多远从房子房子B”? 通常很难回答。 但幸运的是这个村子int答案永远是独一无二的,因为道路建造的方式有一个独特的简单路径(“简单”意味着你不能访问一个地方两次)每两间房子。 你的任务是回答所有这些好奇的人们。

    输入

    第一行是一个整数T(T < = 10),说明测试用例的数量。
    对于每个测试用例,在第一行有两个数n(2 < = n < = 40000)和m(1 < = m < = 200),房屋的数量和查询的数量。 每个组成三个数字我以下n - 1行,j,k,布鲁里溃疡单一空间分离,这意味着有一条路连接房子我和j,k长度(0 < k < = 40000)。 的房子都从1到n的标签。
    下一个m线各有不同的整数i和j,你areato回答房子我和房子之间的距离。

    输出

    对于每个测试用例,输出线。 每一行代表查询的答案。 每个测试用例后输出一个乏味的线。

    样例输入

    2
    3  2
    1 2 10
    3 15
    1 2
    2 3
    
    2 - 2
    1 2 100
    1 2
    2 1

    样例输出

    10
    25
    100
    100
    记得 一开始 自己感觉特别难 很容易就超时了 一直不敢写 但是 结果却差好多 不会吵的 邻接表来一发
    #include<algorithm>
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    #include<math.h>
    using namespace std;
    #define LL long long
    #define INF 0x3f3f3f3f
    #define N 40006
    int k,y,w[N],t;
    int aa[N<<1];
    struct node
    {
        int f,g,v;
    }a[N<<1];
    void add(int e,int f,int g)
    {
        a[k].f=f;
        a[k].g=g;
        a[k].v=aa[e];
        aa[e]=k++;
    }
    void bfs(int x,int sum)
    {
        if(x==y)
            t=sum;
        if(t!=-1) return ;
        for(int i=aa[x];i!=-1;i=a[i].v)
        {
            int f=a[i].f;
            if(!w[f])
            {
                w[f]=1;
                bfs(f,sum+a[i].g);
            }
        }
    }
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            k=0;
            int n,m,e,f,g;
            memset(aa,-1,sizeof(aa));
            scanf("%d%d",&n,&m);
            for(int i=1;i<n;i++)
            {
                scanf("%d%d%d",&e,&f,&g);
                add(e,f,g);
                add(f,e,g);
            }
            while(m--)
            {
                int x;
                t=-1;
                scanf("%d%d",&x,&y);
                memset(w,0,sizeof(w));
                w[x]=1;
                bfs(x,0);
                printf("%d
    ",t);
            }
        }
        return 0;
    }
  • 相关阅读:
    利用ansible一键部署nfs.yml格式剧本
    测试基础面试题 + SQL 面试题(选择题有部分答案,难度:低)
    Python Random模块
    SQL + Python 面试题:之二(难度:中等)
    接口测试面试题:之一(中英文题目、难度:简单)
    SQL面试题:之一(难度:中等)
    QA面试题:之一(中英文题目、难度:简单)
    通过 Python_Faker 生成测试数据
    Appium_Python_API_速查表
    Appium 命令使用说明
  • 原文地址:https://www.cnblogs.com/a719525932/p/5799368.html
Copyright © 2011-2022 走看看