我有一个无向图,它有一些节点和边。
每个节点都有一定的颜色,每个边都是特定类型,由它连接到的节点的颜色决定:
red-blue == blue-red
。我的任务是编写能够找到所有边缘的算法#34;隔离"。
当原始边缘与原始边缘与原始边缘相同的下一个边缘之间至少有2个边缘距离时,边缘被隔离。
最好的方法是什么?最有可能的是它可以使用广度/深度优先搜索来解决,但我无法找到将它们连接到这个特定问题的方法
答案 0 :(得分:0)
我很确定这会有效,不确定复杂性
For each node n:
For each edge (n, n2) e:
n.colors[edgeColor(e)] += 1
For each node n:
n.colors2 = n.colors.copy()
For each edge (n, n2) e:
n.colors2 = mergeSum(n.colors2, n2.colors)
For each edge (n, n2) e:
if n.colors2[edgeColor(e)] == 2 and n2.colors2[edgeColor(e)] == 2:
isolated edge