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

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>
            国产精品稀缺呦系列在线| 亚洲精品一区二区三区婷婷月| 国产精品一页| 国产精品一区久久久| 国产精品激情偷乱一区二区∴| 国产精品高清免费在线观看| 欧美日韩午夜精品| 国产欧美不卡| 91久久线看在观草草青青| 99热在这里有精品免费| 亚洲综合成人在线| 狼狼综合久久久久综合网| 欧美激情小视频| 最新成人av网站| 一区二区电影免费观看| 亚洲自拍电影| 久久综合网hezyo| 国产精品国产三级国产普通话蜜臀 | 亚洲欧美激情一区二区| 欧美中文在线观看| 亚洲黄色在线看| 亚洲一区视频| 麻豆精品一区二区av白丝在线| 欧美视频在线观看 亚洲欧| 国内精品久久久久久| 亚洲精品国久久99热| 久久激情视频久久| 99热免费精品| 欧美成人精品一区二区| 国产欧美一区二区三区沐欲| 99精品免费视频| 免费久久精品视频| 亚洲一区二区三区精品在线| 欧美精品在线免费播放| 今天的高清视频免费播放成人| 亚洲欧美日韩精品在线| 亚洲国产欧美一区二区三区同亚洲| 日韩视频免费观看高清完整版| 亚洲精品精选| 久久乐国产精品| 国产精品久久久久国产精品日日| 亚洲高清不卡av| 久久www成人_看片免费不卡| 一区二区高清视频在线观看| 欧美激情精品久久久久| 亚洲国产成人久久综合| 久久久精品欧美丰满| 亚洲性图久久| 国产精品久久久一区二区三区 | 欧美激情第三页| 国自产拍偷拍福利精品免费一| 亚洲午夜久久久久久久久电影网| 欧美激情一区二区三区高清视频| 久久久国产91| 亚洲国产精品va在线看黑人 | 亚洲欧美一区二区激情| 欧美四级剧情无删版影片| 夜夜嗨av一区二区三区免费区| 亚洲国产精品免费| 欧美电影在线播放| 亚洲国产精品va| 亚洲韩日在线| 欧美日韩一区二区三区视频| 一区二区91| 亚洲先锋成人| 韩国久久久久| 欧美高清在线视频| 欧美男人的天堂| 性欧美在线看片a免费观看| 亚洲影院免费观看| 黄色国产精品| 亚洲国产高清高潮精品美女| 久久综合九色综合网站| 亚洲人成毛片在线播放女女| 亚洲电影在线观看| 欧美日韩亚洲激情| 亚洲欧美日韩一区在线| 亚洲专区欧美专区| 国产一区二区三区高清在线观看 | 久热国产精品| 欧美91精品| 亚洲在线电影| 久久久精品一区二区三区| 亚洲国产另类精品专区| 亚洲精品一区二区三区av| 欧美日韩一本到| 久久久综合免费视频| 欧美福利视频网站| 亚洲国产精品成人综合| 亚洲第一页在线| 国产精品久久久久天堂| 久久伊人一区二区| 欧美在线视频一区二区| 久久精品成人欧美大片古装| 香蕉久久夜色精品国产使用方法| 国产综合欧美在线看| 欧美成年网站| 国产精品家庭影院| 欧美成人一区二区在线 | 久久免费观看视频| 一区二区欧美亚洲| 久久国产精品久久久久久久久久| 亚洲免费精品| 欧美一区二区三区成人| 91久久在线| 欧美专区在线观看一区| 一区二区三区精品久久久| 欧美一区二区高清| 在线一区二区三区四区| 久久久久久久999| 欧美一级视频免费在线观看| 欧美成人dvd在线视频| 欧美一区二区三区四区在线观看 | 免费亚洲电影在线| 欧美一级网站| 欧美视频在线观看| 亚洲国内高清视频| 在线视频国产日韩| 午夜影院日韩| 亚洲一区二区三区四区五区午夜| 久久精品一区二区三区不卡牛牛| 欧美一区二区三区免费视| 欧美日本国产| 亚洲国产精彩中文乱码av在线播放| 欧美视频在线观看免费| 亚洲毛片在线看| 一区二区三区高清| 欧美日韩国产不卡| 亚洲免费成人av| 夜夜嗨av一区二区三区免费区| 免费成人黄色| 欧美国产在线观看| 亚洲国产一区视频| 欧美国产精品人人做人人爱| 欧美国产日产韩国视频| 136国产福利精品导航网址| 欧美在线观看视频一区二区| 欧美一级久久久| 国产精品丝袜白浆摸在线| 亚洲性xxxx| 欧美中文字幕视频| 国产亚洲成年网址在线观看| 性欧美长视频| 久久综合亚洲社区| 亚洲福利视频二区| 欧美电影打屁股sp| 亚洲免费av电影| 香蕉亚洲视频| 国产精品综合| 久久精品在线观看| 亚洲国产高清自拍| 亚洲一区影院| 国产夜色精品一区二区av| 亚洲女同同性videoxma| 久久国产一区二区| 亚洲国内在线| 亚洲精品乱码久久久久久久久| 欧美精品少妇一区二区三区| 亚洲精品久久久久久久久久久久 | 国产精品亚洲аv天堂网| 在线一区二区三区四区| 久久福利电影| 亚洲精品久久久一区二区三区| 欧美日韩亚洲一区二区| 亚洲字幕一区二区| 女人香蕉久久**毛片精品| 一区二区三区久久久| 国产伦精品一区二区三区视频孕妇 | 欧美大片在线看| 这里只有精品视频在线| 久久久综合网| 亚洲伊人第一页| 在线观看亚洲精品视频| 欧美视频在线观看| 久久久久久久性| 亚洲色图自拍| 亚洲国产视频直播| 性久久久久久久| 亚洲日韩欧美一区二区在线| 国产精品theporn88| 久久国产精品一区二区| 亚洲精品国产视频| 老色批av在线精品| 性视频1819p久久| 日韩视频在线永久播放| 国产精品国产三级国产专播精品人| 久久深夜福利免费观看| 亚洲视频观看| 91久久精品国产91性色| 久久福利电影| 亚洲一区二区三区色| 亚洲精品在线一区二区| 国产亚洲精品福利| 国产精品综合不卡av| 欧美日韩在线播放三区| 另类尿喷潮videofree| 久久久久成人网| 久久不射中文字幕| 亚洲直播在线一区| 亚洲永久精品国产|