for (int i = 1; i <=point; i++)//枚举与当前顶点相邻接的顶点 { if (arr[cur][i]==1)//如果两个顶点相邻接 { if (num[i] == 0)//如果顶点i的时间戳为0,则顶点i还没有被访问过 { child++;//当前顶点的孩子节点数增加 dfs(flag,num, low, arr, i, cur);//访问顶点i,顶点i的父亲是当前顶点 low[cur] = min(low[cur], low[i]);//顶点i访问完后,顶点i也有了自己的时间戳,此时更新当前顶点所能回溯的最早时间戳
//录入边的信息 int a, b; for (int i = 0; i < edge; i++) { cin >> a >> b; arr[a][b] = 1; arr[b][a] = 1; } //dfs dfs(flag,num,low,arr,1, root); //输出结果 for (int i = 1; i <= point; i++) { if (flag[i] == true) { cout << i << endl; } }
for (int i = 1; i <=point; i++)//枚举与当前顶点相邻接的顶点 { if (arr[cur][i]==1)//如果两个顶点相邻接 { if (num[i] == 0)//如果顶点i的时间戳为0,则顶点i还没有被访问过 { child++;//当前顶点的孩子节点数增加 dfs(flag,num, low, arr, i, cur);//访问顶点i,顶点i的父亲是当前顶点 low[cur] = min(low[cur], low[i]);//顶点i访问完后,顶点i也有了自己的时间戳,此时更新当前顶点所能回溯的最早时间戳