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

posts - 18,  comments - 5,  trackbacks - 0

一、題目描述

Cerror is the mayor of city HangZhou. As you may know, the traffic system of this city is so terrible, that there are traffic jams everywhere. Now, Cerror finds out that the main reason of them is the poor design of the roads distribution, and he want to change this situation.

In order to achieve this project, he divide the city up to N regions which can be viewed as separate points. He thinks that the best design is the one that connect all region with shortest road, and he is asking you to check some of his designs.

Now, he gives you an acyclic graph representing his road design, you need to find out the shortest path to connect some group of three regions.

Input

The input contains multiple test cases! In each case, the first line contian a interger N (1 < N < 50000), indicating the number of regions, which are indexed from 0 to N-1. In each of the following N-1 lines, there are three interger Ai, Bi, Li (1 < Li < 100) indicating there's a road with length Li between region Ai and region Bi. Then an interger Q (1 < Q < 70000), the number of group of regions you need to check. Then in each of the following Q lines, there are three interger Xi, Yi, Zi, indicating the indices of the three regions to be checked.

Process to the end of file.

Output

Q lines for each test case. In each line output an interger indicating the minimum length of path to connect the three regions.

Output a blank line between each test cases.

Sample Input

4
0 1 1
0 2 1
0 3 1
2
1 2 3
0 1 2
5
0 1 1
0 2 1
1 3 1
1 4 1
2
0 1 2
1 0 3

Sample Output

3
2
2
2


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

  1#include<iostream>
  2#include<cmath>
  3#include<list>
  4using namespace std;
  5int n, q;
  6struct node
  7{
  8    int lab, dis;
  9    void init(int l, int d)
 10    {
 11        lab = l; dis = d;
 12    }

 13}
;
 14int v1, v2, v3, len;
 15list<node> g[50001];
 16int ei, e[100002], r[50001], l[100002], d[50001];
 17bool visit[50001];
 18int pow2[18];
 19int mmin[18][100002];
 20void dfs(int u, int dep)
 21{
 22    e[++ei] = u; l[ei] = dep;
 23    if(visit[u]) return;
 24    visit[u] = true;
 25    list<node>::iterator it = g[u].begin();
 26    while(it != g[u].end())
 27    {
 28        int v = it->lab, len = it->dis;
 29        if(!visit[v])
 30        {
 31            d[v] = min(d[v], d[u] + len);
 32            dfs(v, dep+1);
 33            e[++ei] = u; l[ei] = dep;
 34            
 35        }

 36        it++;
 37    }

 38}

 39void init_rmq()
 40{
 41    ei = 0;
 42    memset(visit, 0sizeof(visit));
 43    d[0= 0;
 44    dfs(01);
 45    memset(r, -1sizeof(r));
 46    for(int i=1; i<=ei; i++)
 47        if(r[e[i]] == -1)
 48            r[e[i]] = i;
 49    memset(mmin, 0sizeof(mmin));
 50    for(int i=1; i<=ei; i++)
 51        mmin[0][i] = i;
 52    int t1 = (int)(log((double)ei) / log(2.0));
 53    for(int i=1; i<=t1; i++)
 54        for(int j=1; j + pow2[i] - 1<=ei; j++)
 55        {
 56            int a = mmin[i-1][j], b = mmin[i-1][j+pow2[i-1]];
 57            if(l[a] <= l[b])
 58                mmin[i][j] = a;
 59            else
 60                mmin[i][j] = b;
 61        }

 62}

 63int rmq(int u, int v)
 64{
 65    int i = r[u], j = r[v];
 66    if(i > j) swap(i, j);
 67    int t1 = (int)(log((double)j - i + 1/ log(2.0));
 68    int a = mmin[t1][i], b = mmin[t1][j - pow2[t1] + 1];
 69    if(l[a] <= l[b])
 70        return e[a];
 71    else
 72        return e[b];
 73}

 74int main()
 75{
 76    for(int i=0; i<18; i++)
 77        pow2[i] = 1 << i;
 78    bool flag = false;
 79    while(scanf("%d"&n) != EOF)
 80    {
 81        if(flag) printf("\n");
 82        flag = true;
 83        for(int i=0; i<n; i++)
 84        {
 85            g[i].clear();
 86            d[i] = INT_MAX;
 87        }

 88        for(int i=0; i<n-1; i++)
 89        {
 90            scanf("%d%d%d"&v1, &v2, &len);
 91            node n1; n1.init(v2, len);
 92            g[v1].push_back(n1);
 93            node n2; n2.init(v1, len);
 94            g[v2].push_back(n2);
 95        }

 96        init_rmq();
 97        scanf("%d"&q);
 98        while(q--)
 99        {
100            int res = INT_MAX;
101            scanf("%d%d%d"&v1, &v2, &v3);
102            int temp = 0;
103            int lca1 = rmq(v1, v2);
104            temp = d[v1] + d[v2] - 2*d[lca1];
105            int lca2 = rmq(lca1, v3);
106            temp += d[lca1] + d[v3] - 2*d[lca2];
107            res = min(res, temp);
108            temp = 0;
109            lca1 = rmq(v1, v3);
110            temp = d[v1] + d[v3] - 2*d[lca1];
111            lca2 = rmq(lca1, v2);
112            temp += d[v2] + d[lca1] - 2*d[lca2];
113            res = min(res, temp);
114            temp = 0;
115            lca1 = rmq(v2, v3);
116            temp = d[v2] + d[v3] - 2*d[lca1];
117            lca2 = rmq(lca1, v1);
118            temp += d[v1] + d[lca1] - 2*d[lca2];
119            res = min(res, temp);
120            printf("%d\n", res);
121        }

122    }

123}
posted on 2009-07-02 20:55 Icyflame 閱讀(1291) 評論(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>
            欧美大片免费观看在线观看网站推荐 | 国产欧美一区二区三区国产幕精品 | 亚洲国产欧美一区二区三区久久 | 亚洲欧美日韩精品久久久久| 欧美成人午夜激情在线| 午夜国产一区| 在线亚洲欧美| 午夜精品一区二区三区电影天堂 | 午夜久久久久久| 欧美中文字幕| 欧美xx视频| 99v久久综合狠狠综合久久| 亚洲一区二区三区在线播放| 欧美一区视频在线| 麻豆久久婷婷| 国产精品国产精品| 国内精品久久久久久久影视蜜臀| 伊人狠狠色丁香综合尤物| 亚洲电影中文字幕| 午夜在线视频观看日韩17c| 午夜精品福利一区二区三区av| 亚洲在线一区二区三区| 久久福利一区| 亚洲国产精品久久久久秋霞影院 | 久久人人超碰| 亚洲成色777777女色窝| 国产精品99久久久久久久久久久久| 亚洲女人av| 老鸭窝毛片一区二区三区| 欧美色图麻豆| 一区在线免费| 亚洲午夜精品国产| 免费观看国产成人| 亚洲免费在线| 欧美精品日韩一本| 国产综合精品| 亚洲欧美三级在线| 亚洲国产精品久久久久秋霞不卡| 亚洲专区一区二区三区| 久久在线91| 国产日韩精品在线观看| 亚洲美女精品久久| 久久久精品国产一区二区三区| 欧美国产一区二区| 香蕉成人伊视频在线观看| 欧美精品国产一区| 在线观看亚洲a| 久久激情网站| 亚洲一区二区三区精品视频| 欧美电影免费| 在线成人免费视频| 欧美综合第一页| 中文在线资源观看网站视频免费不卡 | 亚洲免费在线观看| 欧美日韩成人综合在线一区二区| 亚洲第一在线视频| 久久亚洲综合色| 亚洲欧美日韩综合一区| 国产精品久久国产愉拍| 一区二区av在线| 亚洲日本在线观看| 欧美1区2区| 亚洲精品一区二区三区在线观看| 免费一区二区三区| 久久综合一区二区| 亚洲国产99精品国自产| 久久久无码精品亚洲日韩按摩| 亚洲欧美日韩精品一区二区| 国产亚洲人成网站在线观看| 亚洲激情校园春色| 老牛嫩草一区二区三区日本| 国语自产精品视频在线看| 欧美一区二视频| 亚洲伊人第一页| 国产日韩综合| 久久精品国产亚洲精品| 久久久久9999亚洲精品| 在线观看三级视频欧美| 欧美刺激午夜性久久久久久久| 老司机精品视频一区二区三区| 亚洲国产视频一区二区| 亚洲第一精品福利| 欧美日精品一区视频| 亚洲欧美国产高清va在线播| 亚洲视频在线观看视频| 国产精品亚洲视频| 久久亚洲私人国产精品va| 免费在线国产精品| 在线亚洲欧美| 亚洲欧美日韩人成在线播放| 精品福利av| 最近看过的日韩成人| 国产精品大片wwwwww| 亚洲女女做受ⅹxx高潮| 久久av一区| 亚洲精品乱码久久久久久| 在线综合+亚洲+欧美中文字幕| 国产亚洲欧美另类一区二区三区| 欧美激情成人在线视频| 国产精品久久夜| 男人的天堂亚洲在线| 欧美日韩八区| 欧美中文字幕| 欧美国产激情| 久久精品一二三区| 欧美日本精品一区二区三区| 欧美有码在线观看视频| 另类激情亚洲| 午夜综合激情| 欧美精品乱人伦久久久久久| 久久久久五月天| 欧美日韩综合一区| 欧美电影免费观看高清完整版| 国产精品99免视看9| 久久久久九九九九| 欧美日韩国产欧美日美国产精品| 久久久久久亚洲精品不卡4k岛国| 欧美日韩在线视频一区二区| 欧美成人蜜桃| 黄色一区二区三区| 亚洲一区久久久| 一区二区三区四区五区精品| 久久婷婷国产综合尤物精品 | 久久综合五月天婷婷伊人| 国产精品福利在线| 亚洲日本黄色| 亚洲欧洲一区二区在线观看| 欧美一区二区私人影院日本| 亚洲免费中文字幕| 欧美日韩和欧美的一区二区| 亚洲成人在线网| 欧美ab在线视频| 久久久999精品视频| 午夜宅男久久久| 国产精品久久久久久超碰 | 亚洲男人影院| 亚洲欧美国产制服动漫| 欧美日本三级| 亚洲青涩在线| 亚洲麻豆国产自偷在线| 欧美成人一品| 亚洲电影中文字幕| 亚洲日本中文字幕免费在线不卡| 久久久亚洲精品一区二区三区| 久久久夜夜夜| 精品福利免费观看| 久色婷婷小香蕉久久| 欧美jizzhd精品欧美巨大免费| 国产午夜精品久久久| 欧美一区观看| 久热精品在线视频| 激情成人在线视频| 老司机67194精品线观看| 欧美91大片| 亚洲精品视频二区| 欧美日韩一区不卡| 亚洲伦理在线免费看| 亚洲免费视频中文字幕| 国产精品二区三区四区| 欧美一区二区免费视频| 女主播福利一区| 亚洲九九爱视频| 国产精品sm| 欧美一区影院| 欧美大片在线观看一区二区| 亚洲精品偷拍| 国产精品捆绑调教| 久久av一区二区三区亚洲| 欧美成人午夜剧场免费观看| 99国产精品自拍| 国产精品专区第二| 久久青草欧美一区二区三区| 亚洲精品视频在线观看免费| 小处雏高清一区二区三区| 好吊一区二区三区| 欧美激情视频一区二区三区免费| 亚洲五月六月| 欧美激情小视频| 午夜一级在线看亚洲| 亚洲国产日韩欧美一区二区三区| 欧美日韩国产色综合一二三四| 亚洲免费在线播放| 亚洲第一页中文字幕| 欧美一区二视频| 日韩一二在线观看| 国内成人精品2018免费看| 欧美日本一区二区三区| 久久成人综合视频| 亚洲伦理中文字幕| 男男成人高潮片免费网站| 亚洲综合色自拍一区| 亚洲精品视频一区| 激情欧美亚洲| 国产精品午夜视频| 欧美日韩免费观看中文| 另类综合日韩欧美亚洲| 午夜精品短视频| 在线亚洲精品| 亚洲日韩成人| 亚洲国产日韩一区|