还不知道对不对。。。因为uva的judge queue塞车了
#include<stdio.h>
#include<string.h>
int n,m;
int gra[30][30];
int maxlen;
void dfs(int u,int len)
{
if(len > maxlen)
{
maxlen = len;
}
for(int v = 0; v < n; ++v)
{
if(gra[u][v])
{
gra[u][v]=gra[v][u]=0;
dfs(v,len+1);
gra[u][v]=gra[v][u]=1;
}
}
return;
}
int main()
{
//
freopen("input.txt","r",stdin);
while(scanf("%d%d", &n, &m) == 2)
{
if(!n && !m) break;
maxlen = 0;
memset(gra,0,sizeof(gra));
int x,y;
for(int i=0; i < m; ++i)
{
scanf("%d%d",&x,&y);
gra[x][y]=gra[y][x]=1;
}
//start from every node, because different nodes are connected
//to other different nodes
for(int j=0; j < n; ++j)
{
dfs(j,0);
}
printf("%d\n", maxlen);
}
}