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

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問題,詳細(xì)算法: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 閱讀(1335) 評論(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一区二区| 久久深夜福利| 久久精品国产清自在天天线| 欧美女同在线视频| 欧美福利一区二区| 韩国三级电影久久久久久| 亚洲在线一区| 亚洲无人区一区| 欧美日韩系列| 99国产精品久久| 一区二区三区蜜桃网| 欧美激情一区二区三区| 欧美国产91| 最近看过的日韩成人| 理论片一区二区在线| 久久综合久久综合这里只有精品 | 久久久欧美精品| 久久精品日产第一区二区三区 | 亚洲第一精品福利| 久久精品视频免费| 美女国产一区| 老司机午夜精品| 国产一区二区三区丝袜| 亚洲欧美中日韩| 久久久www免费人成黑人精品| 国产精品外国| 模特精品在线| 亚洲国产经典视频| 欧美高清视频www夜色资源网| 亚洲国产精品美女| 亚洲另类一区二区| 欧美日韩国产在线看| 在线一区欧美| 久久久夜精品| 亚洲欧洲日韩在线| 欧美日韩www| 亚洲一区二区三区欧美| 欧美中文在线字幕| 永久免费视频成人| 欧美黄色小视频| 一区二区三区免费在线观看| 亚洲欧美制服中文字幕| 国产在线精品自拍| 欧美xxxx在线观看| 亚洲图片激情小说| 久久亚洲一区二区| 99热精品在线观看| 国产欧美一区二区精品仙草咪| 久久久久国产精品一区| 亚洲精品乱码久久久久久蜜桃麻豆| 国产精品日韩一区| 久久人人97超碰精品888| 亚洲精品一二| 欧美综合第一页| 亚洲人成艺术| 国产精品一区亚洲| 欧美 日韩 国产精品免费观看| 日韩一二三区视频| 久久久久久婷| 宅男精品导航| 一区在线电影| 国产精品久久久久999| 久久人人精品| 亚洲尤物在线视频观看| 亚洲第一在线| 久久精品网址| 亚洲免费视频中文字幕| 亚洲第一黄网| 国产午夜精品福利| 欧美日韩成人激情| 久久影视精品| 性色av一区二区三区| 亚洲乱亚洲高清| 欧美大片在线观看一区| 欧美中日韩免费视频| 一区二区三区不卡视频在线观看 | 欧美一区二区三区四区在线观看地址 | 国产精品欧美在线| 欧美黄色aaaa| 久久人人爽人人爽| 欧美亚洲免费在线| 亚洲视频一区二区| 亚洲精品一区二区三区婷婷月| 美女被久久久| 久久久国产亚洲精品| 亚洲一区免费观看| 在线一区二区日韩| 亚洲日韩成人| 最近看过的日韩成人| 精品成人免费| 国语自产精品视频在线看一大j8 | 亚洲大片一区二区三区| 久久综合色综合88| 久久久噜噜噜久噜久久 | 一本色道久久综合一区| 亚洲经典自拍| 亚洲电影一级黄| 亚洲国产成人精品久久久国产成人一区 | 亚洲黄色免费网站| 欧美激情在线免费观看| 欧美成人中文字幕| 欧美成人精品1314www| 蜜桃av噜噜一区| 欧美va天堂| 欧美搞黄网站| 亚洲激情专区| 日韩视频中文字幕| 亚洲精品影院| 亚洲视频一二区| 亚洲一区二区三区乱码aⅴ蜜桃女| 在线一区亚洲| 亚洲欧美日韩国产另类专区| 亚洲永久网站| 久久精品国产免费观看| 久久久精品一区| 蜜桃av一区二区在线观看| 欧美成人一品| 欧美三级日本三级少妇99| 国产精品久久久久久久久免费樱桃 | 欧美日韩中文精品| 欧美日韩国产bt| 国产精品日韩在线| 黑人一区二区三区四区五区| 在线成人欧美| 日韩一级网站| 欧美一级视频一区二区| 久久久久久久网站| 亚洲成色www8888| 亚洲永久免费| 久久福利毛片| 欧美激情在线| 一区二区三区黄色| 久久精品人人做人人爽| 欧美激情视频在线播放| 国产精品欧美日韩一区二区| 激情一区二区三区| 一区二区欧美亚洲| 久久精品一区二区三区四区 | 欧美精品一卡| 国产精品主播| 亚洲人www| 欧美一区二区视频免费观看| 欧美成年视频| 亚洲图片在线| 麻豆乱码国产一区二区三区| 欧美视频日韩视频| 韩国精品久久久999| 在线亚洲伦理| 免费观看成人www动漫视频| 正在播放亚洲一区| 麻豆精品视频在线观看| 国产麻豆精品在线观看| 日韩午夜在线观看视频| 久久蜜桃av一区精品变态类天堂| 亚洲日本理论电影| 久久九九全国免费精品观看| 国产精品国产三级国产aⅴ9色| 在线观看一区二区视频| 欧美一二三视频| 日韩视频不卡中文| 美女久久网站| 精品福利av| 久久国产免费| 亚洲图片欧美日产| 欧美精品一区二区在线观看| 激情久久一区| 久久久久国产精品厨房| 亚洲一区二区三区四区五区午夜 | 亚洲欧洲综合| 久久亚洲一区二区三区四区| 亚洲欧美福利一区二区| 亚洲欧美在线网| 久久爱另类一区二区小说| 99视频超级精品| 一本在线高清不卡dvd | 香蕉乱码成人久久天堂爱免费| 欧美精品大片| 精品1区2区3区4区| 久久国产色av| 亚洲一区二区在线免费观看| 欧美日韩一区综合| 日韩视频亚洲视频| 亚洲福利在线看| 久久精品国产成人| 国内精品免费午夜毛片| 久久国产综合精品| 亚洲欧美卡通另类91av| 国产精品一区二区久久久| 亚洲一区二区视频在线观看| 亚洲毛片av| 欧美日韩另类视频| 一区二区三区免费看| 日韩网站免费观看| 欧美激情一区二区三区| 亚洲三级国产| 欧美呦呦网站| 一区二区视频免费在线观看| 卡通动漫国产精品|