using System.Collections.Generic;
private int _verticesCount;
private List<int>[] _adjacents;
public Graph(int verticesCount)
_verticesCount = verticesCount;
_adjacents = new List<int>[verticesCount];
for (var i = 0; i < _verticesCount; i++)
_adjacents[i] = new List<int>();
public void AddEdge(int v1, int v2)
public IEnumerable<int> GetAdjacent(int v)
public override string ToString()
StringBuilder s = new StringBuilder();
s.Append(_verticesCount + " vertices, " + System.Environment.NewLine);
for (int v = 0; v < _verticesCount; v++)
foreach (int w in _adjacents[v])
s.Append(System.Environment.NewLine);
public class ArticulationHelper
private int _counter = 0;
private int[] _preorderIndex;
private bool[] _articulationFlags;
public ArticulationHelper(Graph g)
_preorderIndex = new int[g.VerticesCount];
_lowLink = new int[g.VerticesCount];
_articulationFlags = new bool[g.VerticesCount];
for(var i = 0; i<g.VerticesCount;i++)
public static void Main()
Console.WriteLine("Hello World");