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

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>
            久久久久国色av免费看影院 | 久久久www成人免费毛片麻豆| 国产精品美女久久久久av超清 | 久久综合九色九九| 久久精品一区二区三区四区| 国产一区二区按摩在线观看| 久久色中文字幕| 美女任你摸久久| 一区二区三区高清视频在线观看| 一本久道综合久久精品| 国产欧美日韩精品丝袜高跟鞋| 久久av一区二区| 麻豆国产精品777777在线 | 国产日韩亚洲欧美| 蜜臀va亚洲va欧美va天堂| 欧美jizzhd精品欧美巨大免费| 日韩亚洲欧美精品| 亚洲免费综合| 亚洲第一黄网| 99精品国产在热久久婷婷| 国产精品每日更新| 亚洲成色777777在线观看影院| 欧美成人69av| 欧美在线免费视屏| 欧美大片免费久久精品三p| 亚洲视频一区在线| 久久久噜噜噜久久中文字免| 夜夜嗨av一区二区三区免费区| 亚洲女人av| 亚洲美女在线视频| 欧美在线视频免费| 亚洲午夜在线观看| 久久久在线视频| 午夜精品一区二区三区电影天堂| 久久久999精品| 午夜国产精品视频| 欧美精品国产精品| 欧美成人高清视频| 国产一区高清视频| 一区二区三区av| 亚洲国产精品久久久久久女王| 这里是久久伊人| 亚洲精品一区二区三区蜜桃久| 性欧美videos另类喷潮| 亚洲小视频在线| 欧美xart系列高清| 久热精品视频| 国产一区二区按摩在线观看| 中文在线资源观看网站视频免费不卡| 亚洲二区在线观看| 久久se精品一区精品二区| 亚洲欧美日韩直播| 欧美午夜视频网站| 亚洲免费成人av电影| 亚洲国产精品一区二区www在线| 午夜欧美精品| 欧美专区一区二区三区| 国产精品国产三级国产aⅴ无密码| 亚洲大胆在线| 最新中文字幕一区二区三区| 久久在线视频| 免费久久99精品国产| 红桃av永久久久| 久久精品欧美日韩| 久久亚洲不卡| 亚洲大片免费看| 久久久综合视频| 欧美不卡在线视频| 亚洲国产精品成人综合| 欧美成人高清| 最新亚洲一区| 亚洲一区二区三区视频| 国产精品成人在线观看| 亚洲在线观看| 久久女同精品一区二区| 在线观看亚洲精品视频| 麻豆久久婷婷| 日韩一级黄色大片| 亚洲欧美综合国产精品一区| 国产日韩欧美综合在线| 久久久噜噜噜久久中文字免| 欧美不卡高清| 国产精品99久久99久久久二8| 欧美三级视频在线| 午夜精品久久久久久久久久久久 | 亚洲人体影院| 亚洲综合第一页| 国产日韩亚洲| 欧美99在线视频观看| 亚洲狼人精品一区二区三区| 亚洲欧美日韩直播| 黄网站免费久久| 欧美日韩123| 欧美一级在线亚洲天堂| 欧美福利影院| 亚洲欧美中文字幕| 一区免费观看| 欧美视频在线观看一区| 欧美一区二区在线观看| 亚洲国产导航| 久久精品亚洲热| 亚洲日本理论电影| 国产精品区二区三区日本| 久久视频在线免费观看| 亚洲视频一区在线观看| 毛片一区二区| 亚洲欧美日韩爽爽影院| 亚洲国产日韩在线| 国产人成精品一区二区三| 欧美成人69| 欧美在线综合| 亚洲私人影院在线观看| 欧美大色视频| 久久久不卡网国产精品一区| 一区二区冒白浆视频| 悠悠资源网亚洲青| 国产乱码精品一区二区三区五月婷| 久久综合亚州| 久久福利资源站| 亚洲免费综合| 一区二区三区福利| 亚洲精品久久7777| 嫩草伊人久久精品少妇av杨幂| 午夜精品久久久久久久久久久久| 亚洲日本欧美天堂| 伊人狠狠色丁香综合尤物| 国产嫩草一区二区三区在线观看 | 欧美性做爰毛片| 免费观看欧美在线视频的网站| 亚洲欧美日本视频在线观看| 亚洲精品久久久一区二区三区| 欧美/亚洲一区| 麻豆精品一区二区av白丝在线| 午夜国产精品影院在线观看| 艳妇臀荡乳欲伦亚洲一区| 亚洲区第一页| 亚洲日本欧美在线| 1024亚洲| 亚洲黄色天堂| 亚洲国产婷婷| 亚洲精品1区| 亚洲欧洲在线看| 亚洲欧洲久久| 日韩视频一区二区| 一区二区欧美国产| 亚洲香蕉网站| 午夜精品久久久久久久久久久久久 | 亚洲欧洲日产国码二区| 欧美韩国日本一区| 亚洲国产精品久久人人爱蜜臀| 美国十次成人| 欧美激情一区二区三区在线视频| 欧美国产一区二区在线观看| 亚洲国产成人午夜在线一区| 亚洲国产日韩美| 亚洲裸体在线观看| 一区二区三区欧美日韩| 亚洲在线播放电影| 性欧美8khd高清极品| 久久久久久9999| 欧美成人综合网站| 国产精品v一区二区三区 | 欧美大片在线观看一区二区| 欧美日韩不卡视频| 国产精品影音先锋| 国内外成人免费视频 | 国内精品久久久久久久果冻传媒 | 亚洲激情自拍| 亚洲最新色图| 欧美一区二区视频在线观看| 久久久噜噜噜久噜久久| 欧美激情精品久久久久久大尺度| 亚洲日本免费电影| 亚洲欧美综合国产精品一区| 久久久爽爽爽美女图片| 欧美日韩国产小视频在线观看| 国产精品麻豆成人av电影艾秋| 狠狠色综合日日| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美与欧洲交xxxx免费观看 | 久久免费视频网| 亚洲美女视频在线观看| 欧美一区成人| 欧美日韩一区二区三区| 国产原创一区二区| 一区二区三区波多野结衣在线观看| 小黄鸭视频精品导航| 亚洲国产精品www| 欧美在线观看网站| 欧美日韩中文字幕在线| 在线观看一区二区视频| 先锋影音国产精品| 亚洲二区在线视频| 久久精品视频免费观看| 欧美视频日韩视频| 亚洲精品午夜| 久久资源av| 翔田千里一区二区| 欧美三级视频| 亚洲丰满在线|