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

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>
            欧美h视频在线| 伊人影院久久| 宅男在线国产精品| 久久综合色影院| 久久精品视频一| 午夜激情综合网| 久久精品国产91精品亚洲| 日韩视频一区二区在线观看| 欧美日韩免费在线视频| 亚洲欧美99| 亚洲国产裸拍裸体视频在线观看乱了 | 小处雏高清一区二区三区| 玖玖玖免费嫩草在线影院一区| 亚洲在线一区二区三区| 最新高清无码专区| 激情综合网址| 国产一区二区高清不卡| 欧美性理论片在线观看片免费| 毛片一区二区三区| 欧美淫片网站| 久久精品视频免费| 美日韩丰满少妇在线观看| 一区二区三区日韩在线观看| 欧美激情一区二区久久久| 亚洲九九精品| 久久综合色8888| 欧美激情第五页| 亚洲精品久久久久中文字幕欢迎你 | 国产精品私拍pans大尺度在线| 韩国av一区二区三区| 欧美精品久久久久久久| 欧美视频成人| 国内一区二区三区| 夜夜嗨av色一区二区不卡| 久久狠狠一本精品综合网| 亚洲黄色天堂| 久久不射中文字幕| 欧美无乱码久久久免费午夜一区| 伊人久久婷婷| 久久国产精品99久久久久久老狼| 亚洲激情黄色| 久久久蜜桃精品| 国产欧美一区二区色老头| 日韩视频在线观看| 欧美成人福利视频| 久久久久久久久岛国免费| 国产精品久久久久久久久免费樱桃| 亚洲欧洲日产国产网站| 免费一级欧美片在线观看| 欧美一区二区三区在线看| 国产精品久久久久久久久免费 | 在线日本成人| 久久精品亚洲精品| 亚洲欧美视频一区| 国产精品网站视频| 亚洲欧美日韩中文视频| 亚洲一卡二卡三卡四卡五卡| 欧美日韩国产影片| 中日韩高清电影网| 99re热精品| 欧美视频中文在线看| 在线亚洲精品福利网址导航| 日韩一级免费| 欧美四级在线观看| 午夜免费在线观看精品视频| 亚洲网在线观看| 国产欧美精品日韩| 久久久久这里只有精品| 久久久久久久一区二区三区| 在线免费日韩片| 亚洲国产一区二区三区青草影视| 欧美激情一区二区三区蜜桃视频 | 欧美日韩一区精品| 亚洲小说欧美另类社区| 亚洲天堂网在线观看| 国产精品乱人伦中文| 久久精品亚洲一区| 久久九九国产| 日韩午夜电影av| 亚洲手机视频| 一区二区亚洲精品国产| 亚洲高清在线播放| 国产精品vip| 亚洲另类黄色| 久久av一区二区三区| 国产农村妇女毛片精品久久麻豆| 欧美一区免费视频| 久久一区二区三区av| 99在线精品观看| 午夜伦理片一区| 亚洲欧洲另类国产综合| 99热这里只有成人精品国产| 国产亚洲a∨片在线观看| 欧美激情在线观看| 国产精品女同互慰在线看| 久久日韩粉嫩一区二区三区| 欧美 日韩 国产一区二区在线视频 | 国产区日韩欧美| 牛人盗摄一区二区三区视频| 欧美三级在线播放| 免费成人av在线看| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 欧美日韩免费高清一区色橹橹| 欧美一区日本一区韩国一区| 免费国产自线拍一欧美视频| 亚洲欧美日韩国产精品| 裸体素人女欧美日韩| 亚洲专区一区| 欧美人成在线视频| 麻豆成人91精品二区三区| 欧美视频久久| 亚洲国产精品成人一区二区 | 国产精品国产三级国产aⅴ无密码| 狂野欧美性猛交xxxx巴西| 欧美色123| 亚洲高清在线播放| 在线日韩欧美视频| 欧美一区二区久久久| 亚洲在线观看免费| 欧美激情综合五月色丁香小说| 麻豆成人在线观看| 国产一区二区精品丝袜| 亚洲一区免费看| 亚洲男女自偷自拍| 欧美日在线观看| 亚洲精品少妇网址| 亚洲清纯自拍| 欧美激情精品| 亚洲成色精品| 亚洲日韩欧美视频一区| 老妇喷水一区二区三区| 女人色偷偷aa久久天堂| 樱桃国产成人精品视频| 久久久久久久一区二区| 老司机久久99久久精品播放免费| 欧美一级黄色录像| 99re8这里有精品热视频免费| 国产亚洲一区二区三区在线播放| 亚洲国产欧美在线| 亚洲大胆av| 久久综合伊人77777| 欧美+日本+国产+在线a∨观看| 国产一区自拍视频| 久久久午夜精品| 欧美激情视频网站| 日韩视频一区二区在线观看 | 亚洲欧洲在线免费| 一本到12不卡视频在线dvd| 欧美日韩国产另类不卡| 夜色激情一区二区| 欧美一二区视频| 国产亚洲激情视频在线| 久久精品亚洲乱码伦伦中文 | 欧美日韩综合在线免费观看| 最新日韩在线视频| 最新成人av在线| 欧美精品久久久久久久久老牛影院| 亚洲欧洲日韩女同| 亚洲一区一卡| 国内揄拍国内精品久久| 免费在线视频一区| 亚洲乱码日产精品bd| 亚洲欧美一区二区三区在线| 国内精品视频久久| 欧美国产丝袜视频| 亚洲一区二区三区在线观看视频| 久久久噜久噜久久综合| 亚洲日韩视频| 国产精品一区久久| 免费欧美在线视频| 亚洲夜间福利| 亚洲国产精品va在线看黑人| 欧美在线精品免播放器视频| 亚洲青色在线| 国产麻豆91精品| 欧美国产日韩精品| 亚洲欧美日韩国产成人| 亚洲第一网站| 久久久久久网站| 亚洲视频在线观看视频| 一区二区三区在线免费视频| 欧美午夜视频在线| 久久综合久久综合久久| 亚洲在线观看免费视频| 91久久精品一区二区别| 久久精品国产96久久久香蕉 | 久久亚洲精品一区| 一区二区三区免费在线观看| 激情久久五月天| 国产精品一区亚洲| 欧美日本不卡高清| 久久婷婷一区| 午夜日韩福利| 国产精品久久久久毛片大屁完整版 | 一区二区三区高清不卡| 欧美成年人网站| 欧美一区二视频在线免费观看| 亚洲免费av片| 亚洲精品护士| 亚洲区一区二|