Наиболее важным является то, ДФС заказать этот титул, прежде, чем был спрос, с которым число узлов, как родительский узел, мы Dfs дерева эта запись узлов и конечных узлов он начал, так долго, как делать между двумя точками Dfs на линии
Во-первых, это не подрывает структуру дерева, а во-вторых, он также отметил, что относительное соотношение между каждым узлом, который является очень распространенным техника Fenwick дерева
Benpian с C ++ потребностей коды для оплаты, если вы хотите использовать г ++, нужно изменить векторный формат немного, я не знаю, принципов конкретных, во всяком случае, каждый раз, когда вопрос оплаты, лучший C ++ креста, особенно POJ машины оценки.
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <iostream> #include <алгоритм> #include <cstdio> #include <CMATH> #include <вектор> #include < строка > #include <CString> #include <карта> #include < набор > с помощью пространства имен STD; определение типа во долго долго LL; Const INT N = 1e5 + 10 ; Const ИНТ инф = 0x3f3f3f3f ; INT - й [Н]; INT - й изд [N]; INT TR [N]; ИНТпо отношению [N]; вектор < INT > мы [N]; ИНТ п; INT IDX; недействительным ДФС ( ИНТ и) { IDX ++ ; й [и] = IDX; для ( Int I = 0 ; я <м [и] .size (); я ++ ) { ДФС (мо [U] [I]); } Изд [и] = IDX; } INT lowbit ( INT х) { возвращение х & - х; } Недействительными добавить ( INT х, INT с) { INTя; для (I = X; I <= N; I + = lowbit (I)) { тр [I] + = с; } } INT сумма ( INT х) { INT I; INT Рез = 0 ; для (я = х; я; I- = lowbit (я)) { разреш + = тр [I]; } Вернуть Рез; } INT основных () { Int I; CIN >> п; для (I = 1 ; я <п; я ++ ) { INT U, V; зсапЕ ( "% d% d " , & и, & v); ма [и] .push_back (v); } ДФС ( 1 ); для (I = 1 ; I <= п; я ++ ) { надстройка (St [I], 1 ); Vis [I] = 1 ; } INT м; CIN >> м; в то время как (m-- ) { Чара s [N]; зсапЕ ( " % s " , с); если (* s == ' C ' ) { INT х; зсапЕ ( " % d " , & х); если ( по отношению [х]) { надстройка (й [х], - 1 ); по отношению [х] = 0 ; } Иначе { добавить (й [х], 1 ); по отношению [х] = 1 ; } } Еще { INT х; зсапЕ ( " % d " , & х); Е ( " % d \ п ", сумма (изд [х]) - сумма (й [х] - 1 )); } } }