题目大意:有n个命题,已知其中的m个推导,要证明n个命题全部等价(等价具有传递性),最少还需要做出几次推导. 题目分析:由已知的推导可以建一张无向图,则问题变成了最少需要增加几条边能使图变成强连通图.找出所有的强连通分量,将每一个连通分量视作一个大节点,则整张图变成了一张DAG.设出度为0的大节点个数为a,入度为0的大节点个数为b,则答案就是max(a,b).为什么是这样呢?因为要使等价证明前进下去,每个大节点的出度和入度都必须不能是0. 代码如下: # include<iostream> #…