private bool check(Digraph digraph)
        {
            TransitiveClosure transitiveClosure = new TransitiveClosure(digraph);

            for (int i = 0; i < digraph.V(); i++)
            {
                for (int j = 0; j < digraph.V(); j++)
                {
                    if (this.stronglyConnected(i, j) != ((!transitiveClosure.reachable(i, j) || !transitiveClosure.reachable(j, i)) ? false : true))
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
Ejemplo n.º 2
0
        /**/
        public static void main(string[] strarr)
        {
            In                i                 = new In(strarr[0]);
            Digraph           digraph           = new Digraph(i);
            TransitiveClosure transitiveClosure = new TransitiveClosure(digraph);

            StdOut.print("     ");
            for (int j = 0; j < digraph.V(); j++)
            {
                StdOut.printf("%3d", new object[]
                {
                    Integer.valueOf(j)
                });
            }
            StdOut.println();
            StdOut.println("--------------------------------------------");
            for (int j = 0; j < digraph.V(); j++)
            {
                StdOut.printf("%3d: ", new object[]
                {
                    Integer.valueOf(j)
                });
                for (int k = 0; k < digraph.V(); k++)
                {
                    if (transitiveClosure.reachable(j, k))
                    {
                        StdOut.printf("  T", new object[0]);
                    }
                    else
                    {
                        StdOut.printf("   ", new object[0]);
                    }
                }
                StdOut.println();
            }
        }