给出n个结点,m条边。
求出最长的路径,每条边只能用一次。
用回朔法,直到没有一点可以走。则为最大值。
#include<cstdio>
#include<cstring>
const int MAXN=30;
int vis[MAXN][MAXN];
int cnt,n,m;
void dfs(int cur,int start){
if(cur>cnt) cnt=cur;
for(int j=0;j<n;j++){
if(vis[start][j]){
vis[start][j]=vis[j][start]=0;
dfs(cur+1,j);
vis[start][j]=vis[j][start]=1;
}
}
}
int main(){
//freopen("in.txt","r",stdin);
while(~scanf("%d%d",&n,&m)){
if(n==0 && m==0) break;
int s,f;
cnt=0; memset(vis,0,sizeof(vis));
for(int i=0;i<m;i++){
scanf("%d%d",&s,&f);
vis[s][f]=vis[f][s]=1;
}
for(int i=0;i<n;i++) dfs(0,i);
printf("%d\n",cnt);
}
return 0;
}