UVA 539 The Settlers of Catan
题目大意:第一行输入n个城市和m条路,下面m行输入m条路连接那些城市,求一条经过最多路的路径长度
解题思路:把每个点作为初始位置回溯
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
int n, m;
int road[30][30];
int l;
void dfs(int a, int b) {
if(b > l)
l = b;
for(int i = 0; i < n; i++) {
if(road[a][i]) {
road[a][i]--;
road[i][a]--;
dfs(i, b + 1);
road[a][i]++;
road[i][a]++;
}
}
}
int main() {
while(cin >> n >> m && n+m) {
memset(road, 0, sizeof(road));
for(int i = 0; i < m; i++) {
int x, y;
cin >> x;
cin >> y;
road[x][y]++;
road[y][x]++;
}
l = 0;
for(int i = 0; i < n; i++)
dfs(i, 0);
cout << l << endl;
}
return 0;
}