uva 539

来源:互联网 发布:沈飞 知乎 编辑:程序博客网 时间:2024/05/17 22:38

题意:在图上找出最长的路,简单的回溯

#include <cstdio>#include <iostream>#include <cstring>using namespace std;const int MAXN = 30 ;int n,m,G[MAXN][MAXN],vis[MAXN][MAXN],maxNum;void dfs(int u,int num){for (int v = 0 ; v < n ; v++){if (G[u][v] && !vis[u][v]){vis[u][v] = vis[v][u] = 1;dfs(v,num+1);vis[u][v] = vis[v][u] = 0;}}if (num > maxNum) maxNum = num;}int main(){int i,j,a,b;while (scanf("%d%d",&n,&m) != EOF ){if (!n && !m) break;memset(G,0,sizeof(G));for (i = 0 ; i < m ; i++){scanf("%d%d",&a,&b);G[a][b]++,G[b][a]++;}maxNum = -123456789;for (i = 0 ; i < n ; i++){memset(vis,0,sizeof(vis));dfs(i,0);}printf("%d\n",maxNum);}return 0;}