Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 21942

Grafy w C, kolorowanie i dwudzielność.

$
0
0

 Mam problem ponieważ nie zdążę napisać, rozwinąć programów więc potrzebuję pomocy.
1. Potrzebuję program kolorujący podany graf algorytmem LF lub SL.
2.Program w którym użytkownik podaje graf i otrzymuje informację, czy podany graf jest dwudzielny, jeżeli tak to
program zwraca podział zbioru wierzchołków na dwa rozłączne podzbiory - partycje dwudzielności.

Chciałem rozwinąć program aby pokazał czy jest cykl eurela, sprawdzał spójność i wypisywał jego drogę ale na DFS utknąłem
 

#include <stdio.h>

int read_graph ( int tab[50][50], int n )
{
        int i, j;
        char reply;

        for ( i=1 ; i<=n ; i++ )
        {
                for ( j=i ; j<=n ; j++ )
                {
                        if ( i==j )
                        {
                                tab[i][j] = 0;
                                tab[j][i] = 0;
                                continue;
                        }
                        printf("\n Wierzcholki %d & %d maja' krawendz ? (Y/N) :",i,j);
                        while(getchar() != '\n');
                        scanf("%c", &reply);
                        if ( reply == 'y' || reply == 'Y' )
                                {
                                 tab[i][j] = 1;
                                 tab[j][i] = 1;

                        if( i == j )

                            tab[i][j] = tab[i][j] +1;
                          }
                        else
                                {tab[i][j] = 0;
                                 }
                }
        }
        return 0;
}

int main()
{
        int tab[50][50];
        int deg, i, j, n;
        printf("\n Ile wierzcholkow ? : ");
        scanf("%d", &n);

        read_graph(tab, n);
        printf("\n Wierzcholek \t Stopien ");

        for ( i=1 ; i<=n ; i++ )
        {
                deg = 0;
                for ( j = 1 ; j <= n ; j++ )
                        if ( tab[i][j] == 1)
                                deg++;
                printf("\n\n %5d \t\t %d\n\n", i, deg);
        }



  return 0;
}

 


Viewing all articles
Browse latest Browse all 21942