#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
const int maxn = 30;
vector<int> G[maxn];
int vis[maxn][maxn];
int ans;
int n, m;
void dfs(int v, int cnt) {
ans = max(ans, cnt);
for(int i = 0; i < G[v].size(); ++i) {
int tmp = G[v][i];
if(!vis[v][tmp] && !vis[tmp][v]) {//边还没有用
vis[v][tmp] = vis[tmp][v] = 1;
dfs(tmp, cnt+1);
vis[v][tmp] = vis[tmp][v] = 0;//回溯
}
}
}
int main() {
//freopen("data.in", "r", stdin);
while(scanf("%d %d", &n, &m) == 2 && n && m) {
for(int i = 0; i < n; ++i)
G[i].clear();
for(int i = 0; i < m; i++) {
int a, b;
scanf("%d %d", &a, &b);
G[a].push_back(b);
G[b].push_back(a);
}
ans = 0;
for(int i = 0; i < n; ++i) {
memset(vis, 0, sizeof(vis));
dfs(i, 0);
}
printf("%d\n", ans);
}
return 0;
}
POJ 2258 The Settlers of Catan(DFS)
最新推荐文章于 2018-06-28 13:44:20 发布