on
[백준 1068] 트리 (C++)
[백준 1068] 트리 (C++)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
#include < iostream > #include < vector > using namespace std ; vector < int > v[ 50 ]; int N; int cnt; int dnode; bool visited[ 50 ]; void dfs( int curnode) { if (visited[curnode]) return ; visited[curnode] = true ; if (v[curnode]. size () = = 0 | | (v[curnode]. size () = = 1 & & v[curnode][ 0 ] = = dnode)) { cnt + + ; } for ( int i = 0 ; i < v[curnode]. size (); i + + ) { if (v[curnode][i] ! = dnode) dfs(v[curnode][i]); } } int main() { int rootidx = - 1 ; cin > > N; for ( int i = 0 ; i < N; i + + ) { int pa; cin > > pa; if (pa = = - 1 ) rootidx = i; else { v[pa]. push_back (i); } } cin > > dnode; if (dnode = = rootidx) { cout < < 0 ; return 0 ; } dfs(rootidx); cout < < cnt; return 0 ; } Colored by Color Scripter
from http://gamedoridori.tistory.com/13 by ccl(A) rewrite - 2021-08-25 02:00:45