• 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;
    }
  • 相关阅读:
    tcpdump 筛选抓包
    TCP拥塞避免
    【转载】TCP协议
    go 参数传递的是值还是引用 (转)
    go 数组指针 指针数组
    go 协程
    go 接口实现
    go函数可见性
    go 继承
    go 结构体函数
  • 原文地址:https://www.cnblogs.com/a719525932/p/5799368.html
Copyright © 2020-2023  润新知