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

coreBugZJ

此 blog 已棄。

Query on a tree, ACM-DIY Group Contest 2011 Spring 之 5,HDOJ 3804

Query on a tree

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Problem Description
There are some queries on a tree which has n nodes. Every query is described as two integers (X, Y).For each query, you should find the maximum weight of the edges in set E, which satisfies the following two conditions.
1) The edge must on the path from node X to node 1.
2) The edge’s weight should be lower or equal to Y.
Now give you the tree and queries. Can you find out the answer for each query?
 

Input
The first line of the input is an integer T, indicating the number of test cases. For each case, the first line contains an integer n indicates the number of nodes in the tree. Then n-1 lines follows, each line contains three integers X, Y, W indicate an edge between node X and node Y whose value is W. Then one line has one integer Q indicates the number of queries. In the next Q lines, each line contains two integers X and Y as said above.
 

Output
For each test case, you should output Q lines. If no edge satisfy the conditions described above,just output “-1” for this query. Otherwise output the answer for this query.
 

Sample Input
1
3
1 2 7
2 3 5
4
3 10
3 7
3 6
3 4
 

Sample Output
7
7
5
-1

Hint

2<=n<=10^5
2<=Q<=10^5
1<=W,Y<=10^9
The data is guaranteed that your program will overflow if you use recursion.
 

Source
ACM-DIY Group Contest 2011 Spring


OJ上的題解,好復(fù)雜,表示沒(méi)看懂

這個(gè)解法好簡(jiǎn)單,謝謝 Topsky 的指點(diǎn),表示 YM

手寫(xiě)棧 DFS 樹(shù)中的每個(gè)點(diǎn),用 map 記錄當(dāng)前訪問(wèn)的點(diǎn)到根節(jié)點(diǎn)的所有權(quán)值,用 map 的 upper_bound 求得當(dāng)前訪問(wèn)點(diǎn)上的所有詢問(wèn)的結(jié)果,DFS 結(jié)束后一起輸出結(jié)果。


  1 #include <iostream>
  2 #include <cstdio>
  3 #include <map>
  4 #include <list>
  5 #include <stack>
  6 #include <cstring>
  7 #include <algorithm>
  8 
  9 using namespace std;
 10 
 11 const int N = 100009;
 12 const int Q = 100009;
 13 
 14 typedef  pair< intint > PII;
 15 typedef  list< PII > LPII;
 16 typedef  LPII::iterator  LPII_I;
 17 typedef  pair< int, LPII_I > SD;
 18 typedef  stack< SD >  STACK;
 19 typedef  map< intint > MII;
 20 typedef  MII::iterator  MII_I;
 21 
 22 int q;
 23 LPII qry[ N ]; //  y, id
 24 int ans[ Q ];
 25 
 26 int n, wf[ N ];
 27 LPII adj[ N ]; // node, weight
 28 
 29 void input() {
 30         int i, u, v, w;
 31         scanf( "%d"&n );
 32         for ( i = 1; i <= n; ++i ) {
 33                 adj[ i ].clear();
 34                 qry[ i ].clear();
 35         }
 36         for ( i = 1; i < n; ++i ) {
 37                 scanf( "%d%d%d"&u, &v, &w );
 38                 adj[ u ].push_back( PII(v,w) );
 39                 adj[ v ].push_back( PII(u,w) );
 40         }
 41         scanf( "%d"&q );
 42         for ( i = 1; i <= q; ++i ) {
 43                 scanf( "%d%d"&u, &v );
 44                 qry[ u ].push_back( PII(v,i) );
 45         }
 46 }
 47 
 48 void solve() {
 49         static int ink[ N ];
 50         SD sd;
 51         STACK stk;
 52         MII   con;
 53         LPII_I   ite;
 54         
 55         sd.first = 1;
 56         sd.second = adj[ 1 ].begin();
 57         stk.push( sd );
 58         memset( ink, 0sizeof(ink) );
 59         ink[ 1 ] = 1;
 60         con[ -1 ] = 1;
 61         wf[ 1 ] = -1;
 62         for ( ite = qry[ 1 ].begin(); ite != qry[ 1 ].end(); ++ite ) {
 63                 ans[ ite->second ] = -1;
 64         }
 65         while ( ! stk.empty() ) {
 66                 sd = stk.top();
 67                 stk.pop();
 68                 if ( sd.second == adj[ sd.first ].end() ) {
 69                         if ( --con[ wf[ sd.first ] ] < 1 ) {
 70                                 con.erase( wf[ sd.first ] );
 71                         }
 72                 }
 73                 else {
 74                         int j = sd.second->first;
 75                         int w = sd.second->second;
 76                         if ( ink[ j ] ) {
 77                                 ++(sd.second);
 78                                 stk.push( sd );
 79                         }
 80                         else {
 81                                 ink[ j ] = 1;
 82                                 wf[ j ] = w;
 83                                 ++(con[ w ]);
 84                                 for ( ite = qry[ j ].begin(); ite != qry[ j ].end(); ++ite ) {
 85                                         MII_I  mit = con.upper_bound( ite->first );
 86                                         --mit;
 87                                         ans[ ite->second ] = mit->first;
 88                                 }
 89                                 ++(sd.second);
 90                                 stk.push( sd );
 91                                 sd.first = j;
 92                                 sd.second = adj[ j ].begin();
 93                                 stk.push( sd );
 94                         }
 95                 }
 96         }
 97 }
 98 
 99 void output() {
100         for ( int i = 1; i <= q; ++i ) {
101                 printf( "%d\n", ans[ i ] );
102         }
103 }
104 
105 int main() {
106         int td, i, u, v, w;
107         scanf( "%d"&td );
108         while ( td-- > 0 ) {
109                 input();
110                 solve();
111                 output();
112         }
113         return 0;
114 }
115 


posted on 2011-03-26 20:32 coreBugZJ 閱讀(1101) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): ACM

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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热在线精品观看| 国产日韩欧美二区| 国产一区二区三区av电影| 国产亚洲一区二区三区| 国产有码在线一区二区视频| 一色屋精品视频在线观看网站| 在线成人欧美| 日韩视频免费观看| 亚洲女人天堂av| 香蕉尹人综合在线观看| 久久视频这里只有精品| 亚洲第一精品久久忘忧草社区| 久久精品最新地址| 亚洲国产va精品久久久不卡综合| 亚洲精品国精品久久99热一| 亚洲欧美国产精品桃花| 老色批av在线精品| 欧美视频不卡| 雨宫琴音一区二区在线| 亚洲尤物在线视频观看| 欧美激情女人20p| 亚洲一区视频| 欧美紧缚bdsm在线视频| 国内精品久久久久久久97牛牛| 亚洲精品一区二区三区99| 亚洲影院高清在线| 欧美激情女人20p| 欧美一区二区三区久久精品 | 亚洲福利视频在线| 看片网站欧美日韩| 日韩一级大片| 免费成人在线观看视频| 国产精品一区二区你懂得| 亚洲精品系列| 葵司免费一区二区三区四区五区| 一本色道久久精品| 欧美精品激情| 91久久线看在观草草青青| 另类酷文…触手系列精品集v1小说| 夜夜躁日日躁狠狠久久88av| 鲁大师影院一区二区三区| 国产欧美精品xxxx另类| 亚洲一区二区黄色| 亚洲乱码国产乱码精品精98午夜| 久久青草欧美一区二区三区| 国产三区二区一区久久| 亚洲自拍偷拍一区| 亚洲精选在线| 欧美日韩国产色视频| 亚洲精品乱码视频| 亚洲国产精品一区在线观看不卡 | 欧美日韩在线三区| 一本色道久久加勒比精品| 欧美激情第1页| 麻豆成人综合网| 亚洲第一黄网| 欧美激情精品久久久久| 久久综合久色欧美综合狠狠| 在线观看日韩国产| 欧美肥婆bbw| 欧美超级免费视 在线| 亚洲激情第一页| 亚洲国产精品电影| 欧美日韩国产一区精品一区 | 欧美日韩美女| 亚洲天堂成人| 亚洲一区二区三区影院| 国产精品久久久久久久久久免费看| 一区二区三区精品| 亚洲天堂成人在线视频| 国产精品香蕉在线观看| 久久九九热免费视频| 久久精品在线| 亚洲精品一二区| 国产精品99久久不卡二区| 国产亚洲精品一区二区| 欧美成人免费播放| 欧美私人啪啪vps| 欧美一区二区三区婷婷月色 | 久久精品国产69国产精品亚洲| 国产视频综合在线| 亚洲一区二区三区四区视频| 亚洲桃花岛网站| 激情综合自拍| 亚洲片在线资源| 国产精品爽爽爽| 你懂的网址国产 欧美| 欧美精品啪啪| 久久久久久国产精品mv| 欧美精品在线观看播放| 久久av资源网站| 欧美精品电影| 久久久久久精| 欧美日韩一区三区四区| 久久久www成人免费无遮挡大片| 男女av一区三区二区色多| 亚洲欧美日韩系列| 欧美岛国在线观看| 久久久国产精品一区| 欧美伦理视频网站| 久久久久久久综合色一本| 欧美日韩ab片| 欧美99在线视频观看| 国产精品欧美经典| 亚洲精品在线视频观看| 尤物九九久久国产精品的特点| 一区二区高清视频在线观看| 在线不卡亚洲| 欧美一区二区在线免费观看| 亚洲一区二区欧美| 欧美激情国产日韩| 奶水喷射视频一区| 国产亚洲欧美日韩在线一区| 亚洲免费av片| 亚洲美女在线视频| 久久综合999| 久久―日本道色综合久久| 欧美性事免费在线观看| 亚洲激情视频在线播放| 在线精品国产欧美| 亚洲一区自拍| 在线性视频日韩欧美| 美女国产一区| 老司机午夜精品| 狠狠色丁香婷综合久久| 欧美一级久久久久久久大片| 亚洲欧美视频在线观看| 欧美日韩中文精品| 亚洲免费精彩视频| 一区二区三区导航| 欧美日韩国产a| 亚洲精选在线| 亚洲素人一区二区| 欧美四级剧情无删版影片| 亚洲理伦电影| 亚洲男同1069视频| 国产精品社区| 欧美有码在线视频| 欧美v亚洲v综合ⅴ国产v| 亚洲大胆视频| 欧美精品免费视频| 亚洲小视频在线| 久久精品男女| 亚洲国产精品va在线看黑人动漫| 噜噜噜躁狠狠躁狠狠精品视频 | 久久久综合香蕉尹人综合网| 欧美视频在线观看免费网址| 亚洲精品日日夜夜| 亚洲网址在线| 国产精品美女主播| 欧美一级黄色网| 欧美国产精品一区| 在线一区观看| 国产日韩高清一区二区三区在线| 性色av香蕉一区二区| 欧美高清视频一区| 夜夜精品视频一区二区| 欧美午夜在线| 久久久精品一区| 99亚洲一区二区| 久久免费视频在线观看| 亚洲三级电影在线观看| 国产精品白丝jk黑袜喷水| 欧美一二三视频| 国产亚洲在线观看| 欧美国产亚洲精品久久久8v| 在线一区观看| 你懂的视频欧美| 亚洲一区二区三区在线| 国精品一区二区| 欧美日韩视频在线一区二区观看视频 | 国产一区久久| 欧美韩国日本一区| 午夜久久tv| 日韩视频一区| 美女亚洲精品| 翔田千里一区二区| 日韩视频免费观看高清在线视频 | 欧美激情精品| 久久成人18免费网站| 日韩视频在线一区| 国产婷婷精品| 欧美视频精品在线| 欧美+亚洲+精品+三区| 午夜伦理片一区| 亚洲精品久久久一区二区三区| 久久久久久久综合日本| 亚洲一区二区三区四区视频| 亚洲韩日在线| 国产日韩精品视频一区二区三区| 欧美成人综合| 久热精品视频在线观看| 欧美影院午夜播放| 亚洲欧美日韩视频一区| 一区二区av| 一区二区三区欧美激情| 亚洲欧洲日产国产综合网| 免费日本视频一区|