using
System;
class
GFG{
static
int
countWays(
int
[,] mtrx,
int
vrtx,
int
i,
int
dest,
bool
[] visited)
{
if
(i == dest) {
return
1;
}
int
total = 0;
for
(
int
j = 0; j < vrtx; j++) {
if
(mtrx[i,j] == 1 && !visited[j]) {
visited[j] =
true
;
total += countWays(mtrx, vrtx,
j, dest, visited);
visited[j] =
false
;
}
}
return
total;
}
static
int
totalWays(
int
[,] mtrx,
int
vrtx,
int
src,
int
dest)
{
bool
[]visited =
new
bool
[vrtx];
for
(
int
i = 0; i < vrtx; i++) {
visited[i] =
false
;
}
visited[src] =
true
;
return
countWays(mtrx, vrtx, src, dest,
visited);
}
public
static
void
Main()
{
int
vrtx = 11;
int
[,] mtrx = {
{ 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 },
{ 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0 },
{ 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0 },
{ 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0 },
{ 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }
};
int
src = 3;
int
dest = 9;
Console.Write(totalWays(mtrx, vrtx, src - 1,
dest - 1));
}
}