public static void APUtil(int u, boolean[][] edge, boolean[] visited, int[] disc, int[] low, int[] parent, boolean[] ap, int time)
	{
		int children = 0;
		visited[u]=true;
		time++;
		disc[u]=low[u]=time;
		int v=0;
		for(v=0;v<edge[u].length;v++)
		{
			if(edge[u][v])
			{
				if(!visited[v])
				{
					children++;
					parent[v]=u;
					APUtil(v, edge, visited, disc, low, parent, ap, time);
					low[u] = Math.min(low[u],low[v]);
					if(parent[u]==-1 && children>1)
						ap[u]=true;
					if(parent[u]!=-1 && low[v]>=disc[u])
						ap[u]=true;
				}
				else if(parent[u]!=-1 && parent[u]!=v)
					low[u]=Math.min(low[u], disc[v]);
			}
		}
	}