#include <stdio.h>
#include <string.h>
int adjMatrix[5][5]={{0, 1,1,1 ,-1},
{1, 0,1,-1,1},
{1, 1,0,1, 1},
{1,-1,1,0, 1},
{-1,1,1,1, 0}};
int visitedMark[5];
int vtxNum=5;
int FindPath(int startVtx,int endVtx,int pathLen,int targetPathLen)
{
int targetPathNum=0;
if(visitedMark[startVtx]==1)return 0;
visitedMark[startVtx]=1;
if(startVtx==endVtx)
{
printf("Find a path with length of %d\n",pathLen);
if(pathLen==targetPathLen)
targetPathNum++;
}
else
{
for(int i=0;i<vtxNum;i++)
{
int weight=adjMatrix[startVtx][i];
if(weight!=-1)
{
targetPathNum+=FindPath(i,endVtx,pathLen+weight,targetPathLen);
}
}
}
visitedMark[startVtx]=0;
return targetPathNum;
}
int main(void) {
memset(visitedMark,0,sizeof(visitedMark));
int pathNum=FindPath(0,4,0,2);
printf("Find %d path(s) with length of %d.\n",pathNum,2);
return 0;
}