Wednesday, September 18, 2013

Program to find the transitive closure of a matrix using Warshall's Algorithm.


#include<stdio.h>
int i,j;
#define V 4
void transitiveClosure(int graph[V][V])
{
    int i, j, k;
    for (k = 0; k < V; k++)
    {
        for (i = 0; i < V; i++)
        {
          for (j = 0; j < V; j++)
            {
              graph[i][j] = graph[i][j] || (graph[i][k] && graph[k][j]);
            }
        }
    }
    printf ("Following matrix is transitive closure of the given graph\n");
    for ( i = 0; i < V; i++)
    {
        for ( j = 0; j < V; j++)
            printf ("%d ", graph[i][j]);
        printf("\n");
    }
}
int main()
{
    int graph[V][V] = { {1, 1, 0, 1},
                        {0, 1, 1, 0},
                        {0, 0, 1, 1},
                        {0, 0, 0, 1}
                      };
    transitiveClosure(graph);
    return 0;
}

No comments:

Post a Comment