| 113 | } |
| 114 | |
| 115 | public static void pathOut(int x, int y, int vnode) { |
| 116 | if (dep[x] < dep[y]) { |
| 117 | int tmp = x; |
| 118 | x = y; |
| 119 | y = tmp; |
| 120 | } |
| 121 | addEdge2(y, vnode, 0); |
| 122 | for (int p = MAXP - 1; p >= 0; p--) { |
| 123 | if (dep[stjump[x][p]] >= dep[y]) { |
| 124 | addEdge2(stout[x][p], vnode, 0); |
| 125 | x = stjump[x][p]; |
| 126 | } |
| 127 | } |
| 128 | if (x == y) { |
| 129 | return; |
| 130 | } |
| 131 | for (int p = MAXP - 1; p >= 0; p--) { |
| 132 | if (stjump[x][p] != stjump[y][p]) { |
| 133 | addEdge2(stout[x][p], vnode, 0); |
| 134 | addEdge2(stout[y][p], vnode, 0); |
| 135 | x = stjump[x][p]; |
| 136 | y = stjump[y][p]; |
| 137 | } |
| 138 | } |
| 139 | addEdge2(stout[x][0], vnode, 0); |
| 140 | } |
| 141 | |
| 142 | public static void pathIn(int x, int y, int vnode) { |
| 143 | if (dep[x] < dep[y]) { |