快乐交互题
很思维
题意: 有n个点,保证每两个点之间有且仅有一条有向边,给出每个点的入度情况,你可以询问能否从a到b,当得到yes的回答的时候停止询问,要求你找到满足两个点的入度差值最大的能互相到达的a和b
首先因为两个点之间有且仅有一条边,这是一张完全图,
可以把图上的强联通分量缩点,得到的图是一个有向无环图,有唯一的拓扑排序,
先考虑两个强联通分量A和B,设A指向B(A在B的上游),不考虑两个强联通分量以外的其他的点和边,从A中任意取出一个点a,a的最大入度是A中其他的点都指向它,于是是A.size - 1,(因为B不可能有指向A的边,否则AB就在同一个强联通分量中,)从B中取出一个点b,因为A指向B又是一张完全图,则A中所有的点向b的连边都是由A指向b的,则b的入度至少为A.size, 所以b的入度一定比a大,此时a一定能到b,
再考虑除了AB之外的点,若点c在AB的上游,则c对AB的贡献是一致的,(即c和A之间的连边都是从c到A,同理都是从c到B),同理下游也是一致的
由于ABab都是任意取的,所以当一个点的入度小于另一个点的时候从这个点一定能到另一个点
根据这个性质我们枚举任意两点,以两点度数差为关键字排序,问到的第一个Yes就是答案,如果不行则无解
明天补代码(flag