青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 18,  comments - 5,  trackbacks - 0

一、題目描述

Problem Description
There are n houses in the village and some bidirectional roads connecting them. Every day peole always like to ask like this "How far is it if I want to go from house A to house B"? Usually it hard to answer. But luckily int this village the answer is always unique, since the roads are built in the way that there is a unique simple path("simple" means you can't visit a place twice) between every two houses. Yout task is to answer all these curious people.
 


 

Input
First line is a single integer T(T<=10), indicating the number of test cases.
  For each test case,in the first line there are two numbers n(2<=n<=40000) and m (1<=m<=200),the number of houses and the number of queries. The following n-1 lines each consisting three numbers i,j,k, separated bu a single space, meaning that there is a road connecting house i and house j,with length k(0<k<=40000).The houses are labeled from 1 to n.
  Next m lines each has distinct integers i and j, you areato answer the distance between house i and house j.
 


 

Output
For each test case,output m lines. Each line represents the answer of the query. Output a bland line after each test case.
 


 

Sample Input
2
3 2
1 2 10
3 1 15
1 2
2 3
2 2
1 2 100
1 2
2 1
 


 

Sample Output
10
25
100
100


二、分析
      用Tarjan解決的LCA問題,詳細算法:LCA問題
三、代碼

 1#include<iostream>
 2#include<list>
 3using namespace std;
 4struct node
 5{
 6    int v, d;
 7    void init(int vv, int dd) {v = vv; d = dd;}
 8}
;
 9int t, n, m, v1, v2, len;
10list<node> g[40001];
11list<node> query[40001];
12int dis[40001];
13int res[201][3];
14int parent[40001];
15bool visit[40001];
16int find(int k)
17{
18    if(parent[k] == k)
19        return k;
20    return parent[k] = find(parent[k]);
21}

22void tarjan(int u)
23{
24    if(visit[u]) return;
25    visit[u] = true;
26    parent[u] = u;
27    list<node>::iterator it = query[u].begin();
28    while(it != query[u].end())
29    {
30        if(visit[it->v])
31            res[it->d][2= find(it->v);
32        it++;
33    }

34    it = g[u].begin();
35    while(it != g[u].end())
36    {
37        if(!visit[it->v])
38        {
39            dis[it->v] = min(dis[it->v], dis[u] + it->d);
40            tarjan(it->v);
41            parent[it->v] = u;
42        }

43        it++;
44    }

45}

46int main()
47{
48    scanf("%d"&t);
49    while(t--)
50    {
51        scanf("%d%d"&n, &m);
52        for(int i=1; i<=n; i++)
53            g[i].clear();
54        for(int i=1; i<=m; i++)
55            query[i].clear();
56        for(int i=1; i<n; i++)
57        {
58            scanf("%d%d%d"&v1, &v2, &len);
59            node n1; n1.init(v2, len);
60            g[v1].push_back(n1);
61            node n2; n2.init(v1, len);
62            g[v2].push_back(n2);
63        }

64        for(int i=1; i<=m; i++)
65        {
66            scanf("%d%d"&v1, &v2);
67            res[i][0= v1;
68            res[i][1= v2;
69            node n1; n1.init(v2, i);
70            query[v1].push_back(n1);
71            node n2; n2.init(v1, i);
72            query[v2].push_back(n2);
73        }

74        memset(visit, 0sizeof(visit));
75        memset(dis, 0x7fsizeof(dis));
76        dis[1= 0;
77        tarjan(1);
78        for(int i=1; i<=m; i++)
79            printf("%d\n", dis[res[i][0]] + dis[res[i][1]] - 2*dis[res[i][2]]);
80    }

81}
posted on 2009-07-02 22:39 Icyflame 閱讀(1332) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            韩国福利一区| 久久久久久久综合日本| 在线日本高清免费不卡| 欧美精品自拍| 欧美连裤袜在线视频| 久久国产综合精品| 欧美专区第一页| 久久久五月婷婷| 免费成人你懂的| 欧美激情精品久久久久| 欧美喷水视频| 国产精品乱人伦中文| 国产精品尤物| 亚洲国内欧美| 亚洲香蕉视频| 久久综合九色综合久99| 欧美刺激午夜性久久久久久久| 久久婷婷国产综合精品青草| 亚洲国产精品一区在线观看不卡| 亚洲国产成人精品女人久久久| 亚洲精品国产拍免费91在线| 亚洲欧美日韩一区二区三区在线观看 | 亚洲电影成人| 这里只有视频精品| 久久久久久久网站| 国产精品综合不卡av| 亚洲伦理一区| 久久婷婷国产综合尤物精品 | 欧美一区二区精品久久911| 老司机午夜精品视频在线观看| 欧美a一区二区| 一区视频在线| 免费欧美日韩国产三级电影| 西西人体一区二区| 国产精品乱人伦中文| 亚洲色图在线视频| 99riav国产精品| 欧美日韩色综合| 一区二区三区免费网站| 亚洲欧洲日本在线| 欧美精品入口| 午夜精品久久久久久久99热浪潮| 99精品热视频| 国产日韩欧美在线播放| 久久精品91久久久久久再现| 亚洲欧美另类在线观看| 好吊色欧美一区二区三区视频| 久久综合九色欧美综合狠狠| 久久亚洲高清| 中文av一区特黄| 久久精品亚洲一区二区| 亚洲激情成人在线| 亚洲午夜激情网页| 在线观看不卡av| 亚洲裸体在线观看| 国产欧美日韩一区| 亚洲国产精品久久久久秋霞不卡| 欧美美女bb生活片| 麻豆精品精华液| 欧美午夜不卡| 亚洲免费电影在线观看| 国产一区在线视频| 一区二区毛片| 毛片基地黄久久久久久天堂| 亚洲美女电影在线| 亚洲欧美国产日韩天堂区| 91久久精品一区二区三区| 一区二区三区导航| 亚洲精品精选| 久久在线视频在线| 久久亚洲欧洲| 国产日韩欧美电影在线观看| 亚洲美女视频网| 亚洲精品中文字幕在线观看| 久久精品一区四区| 久久久久久久尹人综合网亚洲| 欧美日韩网站| 一区二区三区四区在线| 亚洲一区二区三区乱码aⅴ| 欧美日韩亚洲高清| 99国产精品99久久久久久粉嫩 | 亚洲男人的天堂在线aⅴ视频| 亚洲日本国产| 国产精品都在这里| 一区二区三区高清在线| 亚洲欧美日韩国产精品| 国产精品久久久久av免费| 亚洲女同同性videoxma| 久久综合伊人| 亚洲人成网站在线播| 欧美精品网站| 欧美一区二区三区男人的天堂| 久久躁日日躁aaaaxxxx| 亚洲精品在线视频| 国产网站欧美日韩免费精品在线观看| 性欧美暴力猛交另类hd| 亚洲片在线观看| 久久久久久尹人网香蕉| 亚洲精品美女在线| 国产一区二区激情| 欧美成人三级在线| 久久久国产精品一区二区中文 | 国产精品久久二区| 玖玖视频精品| 久久久久国内| 欧美一二三视频| 亚洲影院在线| 亚洲男人的天堂在线观看| 亚洲国产清纯| 亚洲国产精品久久久久久女王| 久久国产婷婷国产香蕉| 午夜久久久久久久久久一区二区| 亚洲人成艺术| 亚洲最新在线视频| 一区二区三区www| 夜夜爽av福利精品导航| 日韩视频―中文字幕| 亚洲最新视频在线播放| 亚洲视频网站在线观看| 一区二区三区欧美| 亚洲素人在线| 久久精品国产久精国产一老狼| 欧美一区二区三区四区视频 | 亚洲国产天堂久久综合网| 亚洲成人在线| 亚洲一级网站| 久久综合色影院| 亚洲国产视频一区| 亚洲最新在线| 久久福利精品| 欧美日韩在线视频首页| 国产欧美日韩精品丝袜高跟鞋| 国产亚洲欧美一区在线观看| 亚洲国产高清一区二区三区| 一本色道久久综合精品竹菊| 亚洲欧美综合另类中字| 欧美黄色一区二区| 欧美在线视频免费播放| 欧美一区二区三区四区视频| 男女视频一区二区| 亚洲视频一区在线观看| 欧美一区二区三区四区在线| 欧美中在线观看| 免费永久网站黄欧美| 欧美日韩亚洲视频一区| 国产精品一级在线| 狠狠色丁香婷婷综合久久片| 伊人狠狠色丁香综合尤物| 亚洲精品视频在线| 欧美亚洲午夜视频在线观看| 老司机午夜精品视频| 亚洲精品乱码久久久久久黑人 | 一区二区不卡在线视频 午夜欧美不卡在| 亚洲一二三区精品| 午夜精品久久久久久久99樱桃| 欧美女主播在线| 亚洲特色特黄| 亚洲深夜福利在线| 国产精品色午夜在线观看| 欧美岛国在线观看| 亚洲高清免费在线| 亚洲国产精品久久人人爱蜜臀| 免费日本视频一区| av成人免费在线观看| 99精品欧美一区二区三区综合在线 | 免费欧美视频| 欧美国产免费| 亚洲综合欧美日韩| 亚洲欧美中文另类| 在线成人黄色| 一区二区免费在线观看| 亚洲激情成人| 国产精品女人网站| 亚洲国产精品久久久久| 国产精品乱人伦一区二区| 久久综合亚洲社区| 国产精品无码永久免费888| 麻豆精品传媒视频| 国产精品亚洲激情| 亚洲精品影院| 亚洲人成绝费网站色www| 亚洲欧美日韩国产另类专区| 亚洲精品免费一二三区| 欧美在线播放一区二区| 亚洲欧美久久久久一区二区三区| 久久免费视频这里只有精品| 午夜精品久久久久久久99黑人| 鲁大师影院一区二区三区| 欧美中文字幕| 国产午夜亚洲精品理论片色戒| 一本色道久久综合亚洲精品不卡 | 国产精品免费观看在线| 欧美激情综合| 亚洲精品一区在线| 欧美日韩1区| 亚洲尤物在线视频观看| 午夜日韩激情| 国内精品视频久久| 久久亚洲精品视频| 亚洲精品国产精品乱码不99按摩 |