在给定的点中找一条最长路,每条便只能走一次!回溯水过~~
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cctype>
#include<cstdlib>
#include<algorithm>
using namespace std;
int vis[26][26];
int n,m,maxx;
void DFS(int xx,int yy,int count)
{
if(count > maxx) maxx = count;
for(int i = 0;i < 26;i++)
{
if(vis[yy][i])
{
vis[yy][i] = 0;
vis[i][yy] = 0;
DFS(yy,i,count+1);
vis[yy][i] = 1;
vis[i][yy] = 1;
}
}
}
int main()
{
freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
while(scanf("%d %d",&n,&m)==2&&n+m)
{
int in,out;
maxx = 0;
for(int i = 0;i < 26;i++)
memset(vis[i],0,sizeof(vis[i]));
for(int i = 0;i < m;i++)
{
scanf("%d %d",&in,&out);
vis[in][out] = 1;
vis[out][in] = 1;
}
for(int i = 0;i < 26;i++)
for(int j = 0;j < 26;j++)
if(vis[i][j]==1)
{
vis[i][j] = 0;
vis[j][i] = 0;
DFS(i,j,1);
vis[i][j] = 1;
vis[j][i] = 1;
}
printf("%d\n",maxx);
}
return 0;
}