5 5
1 2
2 4
2 3
3 4
4 5
DFS(G)
1 for each vertex u in G.V
2 u.color = WHITE
3 u.π = NIL
4 time = 0
5 for each vertex u in G.V
6 if u.color == WHITE
7 DFS-VISIT(G, u)
DFS-VISIT(G, u)
1 time = time + 1 // white vertex u has just been discovered
2 u.d = time
3 u.color = GRAY
4 for each v in G.adj[u]
5 if v.color == WHITE
6 v.π = u
7 DFS-VISIT(G, u)
8 u.color = BLACK // blacken u; it is finished
9 time = time + 1
10 u.f = time
在上面的算法中,我应该如何遍历反向图来找到SCC。
这里,用Python实现。
请注意我同时构造G和G'。我的DFS也被修改。访问的
数组存储每个节点所在的组件。此外,DFS还接收sequence
参数,即测试节点的顺序。在第一个DFS中,我们传递一个xrange(n),但在第二次中,我们传递第一次执行的反向(顺序)。
该程序将输出如下内容:
3
[1, 1, 1, 2, 3]
def DFSvisit(G, v, visited, order, component):
visited[v] = component
for w in G[v]:
if not visited[w]:
DFSvisit(G, w, visited, order, component)
order.append(v);
def DFS(G, sequence, visited, order):
components = 0
for v in sequence:
if not visited[v]:
components += 1
DFSvisit(G, v, visited, order, components)
n, m = (int(i) for i in raw_input().strip().split())
G = [[] for i in xrange(n)]
Gt = [[] for i in xrange(n)]
for i in xrange(m):
a, b = (int(i) for i in raw_input().strip().split())
G[a-1].append(b-1)
Gt[b-1].append(a-1)
order = []
components = [0]*n
DFS(G, xrange(n), [0]*n, order)
DFS(Gt, reversed(order), components, [])
print max(components)
print components
问题内容: 我有一组数据是通过将相似的子项目匹配在一起,然后按“类别”将这些相似的项目分组而创建的。 现在,必须以使每个“ group_id”内的相关类别分组在一起的方式匹配结果类别。在下面的示例中,一个匹配项是A-> B-> C-> D-> E-> F-> G,这是通过逐行重复获得的。 我已经发布了当前答案,该答案适用于此简单数据集,但是由于实际数据集最多包含1M行,并且每个“ group_id
问题内容: 我正在尝试使用文件“ Tall.txt”将其中包含的整数写入名为“ tall”的数组中。它在某种程度上做到了这一点,但是当我运行它时,它会引发以下异常(: 为什么要完全做到这一点,以及如何将其删除?如我所见,我将文件读取为字符串,然后将其转换为int,这是非法的。 问题答案: 您可能想做这样的事情(如果您使用的是Java 5及更高版本)
问题内容: 我不是Java开发人员,但是我的客户雇用了一位来更新其站点上的一些JAR文件。在此之前,我们审核了现有代码并发现了许多安全漏洞。我们使用的使文件更安全的解决方案之一是创建一个新的数据库用户,该用户具有对数据库的只读访问权限,并且仅针对需要操作JAR文件的那些表。然后,我发现他们将这些凭据与JAR文件一起存储在纯文本文件中,只是有根据的猜测,与公众无关。终于在今天,他们要求更宽松的数据库
然而,我不断得到wa。请帮忙。 下面是我的代码:
问题内容: 我正在为一个类编写一个函数: 我的图是: 其中键是节点,值是边。我的功能给了我这个连接的组件: 但是我将有两个不同的连接组件,例如: 我不明白我在哪里犯了错误。谁能帮我? 问题答案: 让我们简化图形表示: 这里,我们有一个函数返回一个字典,该字典的键是根,值是连接的组件: 让我们尝试一下: {8:[6、8、9],1:[0、1、2、3、4、5、7]}
Tableau可以连接到文本文件数据并设置数据源。Tableau连接到以下文本文件(,,,)。 1. 如何建立连接和设置数据源 第1步:打开Tableau。 第2步: 在Connect下方,单击Text File。 第3步:转到下一个屏幕, 选择要连接的文件,例如SalesJan2009.CSV 单击“Open”选项。 在数据源的左侧,将看到CSV文件。 2. 与文本文件示例的数据连接 这是一个显