题目大意是给定一个图(邻接矩阵就可以),然后问A点到B点的所有路径数(不允许重复)。
#include<iostream>
#include<cstdio>
using namespace std;
const int MAXN=1008;
int n,m,s,e,cnt=0;
bool v[MAXN][MAXN];
bool vis[MAXN][MAXN];
void dfs(int now){
if(now==e){
cnt++;
return ;
}
for(int i=1;i<=n;i++){
if(vis[now][i]==0&&v[now][i]==1){
vis[now][i]=1;
dfs(i);
vis[now][i]=0;
}
}
return ;
}
int main(){
scanf("%d%d%d%d",&n,&m,&s,&e);
for(int i=1;i<=m;i++){
int x,y;
scanf("%d%d",&x,&y);
v[x][y]=1;
v[y][x]=1;
}
dfs(s);
printf("%d\n",cnt);
return 0;
}
这份代码是会重复的,请问如何去重及去环?