题解:ABC277E - Crystal Switches
·题目
链接:Atcoder。
链接:洛谷。
·难度
算法难度:B。
思维难度:A。
调码难度:C。
综合评价:普及+/提高。
·算法
宽度优先搜索+拆点思路
·思路
把每个点分为两段,分别是连接着取值为0的边的(A份)和权值为1的边的(B份)。如果一条边权值为0,就把两个点的A份相连,否则把B份相连,如果一个点上有按钮,就把它A份里连接的点和B份连接,B份里连接的点和A份连接,最后按照普通bfs做就能够得出正确答案。
·代价
O(n+m),每个点和每条边分别被遍历到一次。
·细节
拆点用+n来实现。
·代码
AC。
·注意
输出-1要特殊判断。