题目
样例输入
3
3 3
1 2
1 3
2 3
3 2
1 2
2 3
4 2
1 2
3 4
样例输出
0
0
4
思路
这道题需要求解一个传递闭包,那么Floyd算法就可以解决这个问题!!
floyd算法相当暴力:
找一个中继点k,通过对图中的每一条边(若没有边则将其表为inf),假设是(x指向y的边)判断是否能通过中继点进行松弛
(dis[x][k] + dis[k][y] < dis[x][y] 即为松弛成功)。
寻找下一个中继点,重复上述过程,直至通过图中所有点进行松弛。
Floyd算法指路:https://www.cnblogs.com/wangyuliang/p/9216365.html
回到本题:
如果a赢了b,将dis[a][b]标为1,进行Floyd算法,
将松弛条件改为:dis[i][k] == 1 && dis[k][j] &