快递站共有n个快递点,n个快递点之间通过m条个快递站单向车道连接,快递员从任何一个快递站点出发,都无法通过单向车道回到该站点。也就是说,n个快递点组成一张有向无环图。对于快递点u,如果对于所有的快递点v(v=u),快递员都可以从u走到v,或者从v走到u,那么则评定站点u为超级快递点。请你帮忙计算,一共有多少个超级快递点。
本题难度非常大,需要对图论有较深的理解,不建议初学者尝试。你需要提前了解拓扑排序以及关键路径的相关知识。
我们拓扑排序后可以得到一个序列,并通过这个序列的我们可以计算得到每个点的最早开始时间和最晚开始时间。一个点的最早开始时间和最晚开始时间相等时,我们称这个点是关键路径上的点,关键路径同时也是最长的路径。
对于一个超级快递点y,假设其在拓扑排序中的序列的位置是x,那么[1,x-1]
对应的点都可以到达y,且y可以到达所有[x + 1,n]
的点。
超级快递点有一个性质,那就是它肯定是关键路径上的点,我们可以假设前面属于关键路径上的点形成一条链,后面属于关键路径上的点形成一条链,那么由于关键路径是最长的,所以经过点y肯定比不经过点y更长。 但是这只是一个必要条件,还存在以下的平行的特殊情况: