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

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>
            亚洲欧美美女| 久久av免费一区| 国产精品高潮呻吟久久av无限| 亚洲午夜一区| 99精品视频免费全部在线| 欧美午夜a级限制福利片| 午夜精品久久久久| 欧美一区二区视频在线观看| 伊人天天综合| 亚洲精品国产精品国自产在线 | 媚黑女一区二区| 亚洲精品美女久久7777777| 日韩网站在线观看| 国产毛片一区二区| 欧美黑人在线播放| 欧美午夜美女看片| 老鸭窝亚洲一区二区三区| 日韩小视频在线观看| 国产精品福利网| 久久久久国产精品一区三寸| 久久亚洲私人国产精品va| 一本色道久久综合亚洲精品不| 亚洲一区二区三区欧美| 影音先锋成人资源站| 日韩视频久久| 伊人狠狠色j香婷婷综合| 亚洲精品乱码久久久久久| 国产伦精品一区二区三区在线观看| 免费成人美女女| 国产精品久久久对白| 欧美电影在线观看| 国产精品萝li| 亚洲日产国产精品| 极品少妇一区二区| 一区二区三区国产| 亚洲国产欧美一区二区三区同亚洲 | 久久九九国产精品怡红院| 欧美激情一区| 免费亚洲电影在线| 国产日韩在线播放| 一区二区三区欧美成人| 亚洲国产欧美一区二区三区久久 | 亚洲激情影院| 久久国产综合精品| 销魂美女一区二区三区视频在线| 欧美黄色大片网站| 欧美黑人一区二区三区| 国产综合自拍| 欧美亚洲视频| 久久成人免费视频| 国产精品久久久久一区二区三区共| 亚洲黄色片网站| 亚洲国产精品久久久久婷婷老年| 欧美一区二区在线观看| 久久国产精品久久w女人spa| 欧美香蕉视频| 亚洲五月婷婷| 亚洲欧美怡红院| 国产精品久久午夜| 亚洲婷婷在线| 校园春色综合网| 国产九九精品视频| 亚洲免费网站| 欧美在线一二三区| 国产无一区二区| 欧美一级理论片| 久久综合99re88久久爱| 在线观看亚洲a| 久久久美女艺术照精彩视频福利播放| 久久精品91久久久久久再现| 国产揄拍国内精品对白| 久久久欧美一区二区| 欧美岛国激情| aa亚洲婷婷| 国产精品久久久久久av福利软件 | 亚洲激情av| 免费观看亚洲视频大全| 亚洲国产三级| 亚洲视频日本| 国产日韩欧美夫妻视频在线观看| 欧美亚洲三级| 欧美国产日韩亚洲一区| 一区二区激情| 国产一区二区剧情av在线| 久久久av网站| 亚洲欧洲在线播放| 午夜精品久久久久久久白皮肤 | 亚洲国产成人精品久久| 欧美成人69| 亚洲一区二区三区精品动漫| 久久精品99久久香蕉国产色戒| 在线欧美小视频| 欧美日韩精品免费观看| 欧美伊人久久大香线蕉综合69| 欧美国产日本韩| 小辣椒精品导航| 亚洲人成7777| 国产欧美在线看| 欧美极品在线播放| 欧美在线观看视频一区二区| 亚洲高清视频在线观看| 欧美在线播放一区二区| 亚洲激情校园春色| 国产日韩精品一区| 欧美精品国产一区| 欧美一区成人| 亚洲区免费影片| 久久人人爽人人爽爽久久| 一本色道久久| 1204国产成人精品视频| 国产精品久久久久久久app| 老鸭窝91久久精品色噜噜导演| 一区二区三区波多野结衣在线观看| 鲁大师成人一区二区三区| 亚洲视频网在线直播| 亚洲国产日韩精品| 国产日韩av一区二区| 国产精品成人播放| 欧美阿v一级看视频| 欧美一区二区三区婷婷月色| 在线午夜精品| 一本色道久久精品| 亚洲国产精品嫩草影院| 欧美jizz19hd性欧美| 久久国产精彩视频| 午夜精品999| 亚洲香蕉网站| 一本在线高清不卡dvd| 亚洲三级影院| 最新69国产成人精品视频免费| 国产在线乱码一区二区三区| 国产精品一区二区三区观看| 欧美午夜视频| 国产精品久久久久久亚洲毛片| 欧美激情影音先锋| 欧美国产精品人人做人人爱| 女女同性精品视频| 麻豆成人综合网| 久久综合精品一区| 久久亚洲一区二区三区四区| 久久久久久久999精品视频| 久久精品视频免费观看| 欧美中文字幕精品| 久久精品免费| 久久精品二区三区| 久久久噜噜噜久噜久久| 蜜臀av在线播放一区二区三区| 欧美精品电影在线| 亚洲欧美日韩在线高清直播| 亚洲一区二区三区四区五区午夜| 亚洲网在线观看| 亚洲伊人观看| 午夜精品影院| 久久三级福利| 亚洲国产日韩综合一区| 亚洲精品视频在线观看网站| 99re热这里只有精品免费视频| 一区二区三区免费看| 亚洲欧美在线免费| 久久伊人精品天天| 欧美看片网站| 国产精品网红福利| 激情亚洲网站| 一区二区三区视频在线| 亚洲欧美自拍偷拍| 久久久久一本一区二区青青蜜月| 欧美成人一品| 亚洲天堂网站在线观看视频| 欧美在线观看视频| 欧美精品免费在线| 国产酒店精品激情| 亚洲精品激情| 欧美一区二区视频免费观看| 免费不卡在线观看av| 亚洲视频一二区| 久久久久久久久久久久久久一区| 欧美黄免费看| 国产一区二区三区黄视频| 亚洲人成网站影音先锋播放| 欧美在线高清视频| 亚洲日本一区二区| 久久激情网站| 国产精品久久久久久av福利软件 | 国产精品一区二区视频| 尤物在线精品| 午夜电影亚洲| 亚洲精品免费一二三区| 久久不射电影网| 欧美午夜精品久久久久久孕妇| 在线视频国内自拍亚洲视频| 午夜精品视频一区| 亚洲欧洲三级| 蜜臀99久久精品久久久久久软件| 国产精品专区h在线观看| 亚洲三级视频| 欧美激情一区二区在线 | 欧美日韩aaaaa| 亚洲第一天堂av| 久久永久免费| 欧美一进一出视频|