题目链接
做法
考虑链的情况,我们维护一条链 $ l \dots r $ ,每加入一个点 $ x $ ,可以直接判断是 $ x \dots l \dots r $ 或 $ l \dots r \dots x $ ,然后判断 $ x $ 和端点有没有直接的连边,如果有,连上,返回;否则二分出路径上编号最小的点,继续做下去。
对于树的情况,要把整个集合和连进来的点判断。
对于图的情况,每次发现当前点相邻的时候要二分出每条与集合相连的边,由于点的度数不超过 $ 7 $ ,所以能过。
1 |
|
To love and win is the best thing. To love and lose is the next best thing.
考虑链的情况,我们维护一条链 $ l \dots r $ ,每加入一个点 $ x $ ,可以直接判断是 $ x \dots l \dots r $ 或 $ l \dots r \dots x $ ,然后判断 $ x $ 和端点有没有直接的连边,如果有,连上,返回;否则二分出路径上编号最小的点,继续做下去。
对于树的情况,要把整个集合和连进来的点判断。
对于图的情况,每次发现当前点相邻的时候要二分出每条与集合相连的边,由于点的度数不超过 $ 7 $ ,所以能过。
1 | #include <bits/stdc++.h> |