#include <cstdio>
#include <cstring>
bool f[26][26], visit[26][26];
int n, m;
int dfs(int u)
{
int ans = 0, t;
for(int i = 0; i < n; i++) if(f[u][i]&&!visit[u][i])
{
visit[u][i] = visit[i][u] = 1;
t = dfs(i)+1;
ans = ans < t?t:ans;
visit[u][i] = visit[i][u] = 0;
}
return ans;
}
int main ()
{
int a, b;
while(scanf("%d%d", &n,&m)&&m+n)
{
memset(f,false,sizeof(f));
memset(visit,false,sizeof(visit));
for(int i = 0; i < m; i++)
{
scanf("%d%d",&a, &b);
f[a][b] = f[b][a] = 1;
}
int t, max = 0;
for(int i = 0; i < n; i++)
{
t = dfs(i);
max = max < t?t:max;
}
printf("%d\n",max);
}
return 0;
}学如逆水行舟,不进则退!!=_=!
本文展示了一个使用C++实现的深度优先搜索(DFS)算法示例,该算法用于寻找图中节点的最大连接路径长度。代码包括必要的头文件导入、布尔型数组用于标记访问状态、DFS递归函数定义及主函数流程。
560

被折叠的 条评论
为什么被折叠?



