输入:N A B N表示有多少个城市,A表示要出发的城市,B表示要到达的城市
接着输入N*N的矩阵, 表示任意两个城市是否连通,连通用1表示,否则用0表示;
如:
3 0 2
1 1 1
1 1 1
1 1 1
输出: 从A到B共有多少条路。
#include <iostream>
#include <algorithm>
using namespace std;
#define M 100
int arr[M][M];
int counter=0;
int N,A,B;
void find(int k,int B,int A)
{
if(k==B)
{
++counter;
return ;
}
for(int i=0;i<N;++i)
{
if(arr[k][i]==1 && k!=i && i!=A)
find(i,B,k);
}
}
int main()
{
int i,j;
cout<<"输入N A B:"<<endl;
cin>>N>>A>>B;
cout<<"输入城市间的连接矩阵(图的矩阵表示形式):"<<endl;
for(i=0;i<N;++i)
{
for(j=0;j<N;++j)
{
cin>>arr[i][j];
}
}
if(A>B)
swap(A,B);
for(i=0;i<N;++i)
{
if(arr[A][i]==1 && A!=i)
find(i,B,A);
}
cout<<counter<<endl;
return 0;
}