示例#1
0
        static void Main(string[] args)
        {
            GrafoNaoDirigido g1 = LeituraArquivo.GrafoNaoDirigido(@"..\..\..\GrafosTests2\txts\NaoDirigido\Prim.txt");

            GrafoDirigido gDirigido = LeituraArquivo.GrafoDirigido(@"..\..\..\GrafosTests2\txts\Dirigido\SemCiclo.txt");

            Console.WriteLine("São adjacentes: " + g1.isAdjacente(g1.vertices[0], g1.vertices[1]));
            Console.WriteLine("Grau: " + g1.getGrau(g1.vertices[0]));
            Console.WriteLine("É isolado: " + g1.isIsolado(g1.vertices[0]));
            Console.WriteLine("É pendente: " + g1.isPendente(g1.vertices[0]));
            Console.WriteLine("É regular: " + g1.isRegular());
            Console.WriteLine("É nulo: " + g1.isNulo());
            Console.WriteLine("Completo: " + g1.isCompleto());
            Console.WriteLine("É conexo: " + g1.isConexo());
            Console.WriteLine("Numero de Cut Vértice: " + g1.getCutVertices());
            Console.WriteLine("É Euleriano: " + g1.isEuleriano());
            Console.WriteLine("É Unicursal: " + g1.isUnicursal());
            Console.WriteLine("Grafo Complementar: ");
            g1.getComplementar().Imprimir();
            Console.WriteLine("Arvore Geradora Prim: ");
            g1.getAGMPrim(g1.vertices[0]).Imprimir();
            Console.WriteLine("Arvore Geradora Kruskal");
            g1.getAGMKruskal().Imprimir();


            Console.ReadKey();
        }
        public static GrafoDirigido GrafoDirigido(String nomeArquivo)
        {
            String s;

            String[] aux;

            StreamReader arquivoGrafo;

            try
            {
                arquivoGrafo = new StreamReader(nomeArquivo);

                int qtdVertices = int.Parse(arquivoGrafo.ReadLine());
                s = arquivoGrafo.ReadLine();

                Vertice[] vertices = new Vertice[qtdVertices];

                int verticeX;
                int verticeY;

                while (s != null)
                {
                    aux = s.Split(';');

                    verticeX = int.Parse(aux[0]) - 1;
                    verticeY = int.Parse(aux[1]) - 1;

                    if (vertices[verticeX] == null)
                    {
                        vertices[verticeX] = new Vertice(verticeX + 1);
                    }

                    if (vertices[verticeY] == null)
                    {
                        vertices[verticeY] = new Vertice(verticeY + 1);
                    }

                    int adjacencia = int.Parse(aux[3]);

                    if (adjacencia > 0)
                    {
                        vertices[verticeX].AddVerticeAdjacente(vertices[verticeY], int.Parse(aux[2]));
                    }
                    else
                    {
                        vertices[verticeY].AddVerticeAdjacente(vertices[verticeX], int.Parse(aux[2]));
                    }

                    s = arquivoGrafo.ReadLine();
                }

                GrafoDirigido grafo = new GrafoDirigido(VerticesPendentes(vertices));

                arquivoGrafo.Close();

                return(grafo);
            }

            catch (FileNotFoundException ex)
            {
                throw ex;
            }

            catch (Exception ex)
            {
                throw ex;
            }
        }