输入n,m;
n表示点数[0,n),m表示边数;
让你求出从一个点出发最长的变数点可以重复边不可以;
穷举每个点做起点就好
#include <iostream>
#include<cstring>
#include<algorithm>
#define inf 1<<30
using namespace std;
int v[26][26],ma[26][26];
int n,m;
int MAX;
void lbu(int i,int sum)
{
for(int j=0;j<n;j++)
if(ma[i][j]&&!v[i][j])
{
v[i][j]=v[j][i]=1;
lbu(j,sum+1);
v[i][j]=v[j][i]=0;
}
MAX=max(sum,MAX);
}
int main()
{
while(cin>>n>>m,n+m)
{
// for(int i=0;i<26;i++)
// for(int j=0;j<26;j++)
// ma[i][j]=inf;
for(int i=0; i<m; i++)
{
int a,b;
cin>>a>>b;
ma[a][b]=ma[b][a]=1;
}
for(int i=0;i<n;i++)
lbu(i,0);
cout<<MAX<<endl;
memset(v,0,sizeof(v));
memset(ma,0,sizeof(ma));
MAX=0;
}
return 0;
}