代码(未验证对错):
int eat(vector<vector<int>>& g, int k, vector<int>& path) {
bool flag = false;
int record = 0;
vector<int> re;
for (int i = 0; i < g.size(); i++) {
if (g[k][i] != 0 && find(path.begin(), path.end(), i) == path.end()) {
path.push_back(i);
int temp = eat(g, i, path);
if (temp > record) {
record = temp;
flag = true;
re = path;
}
path.pop_back();
}
}
if (!flag)return 1;
path = re;
return record + 1;
}
int main() {
int N = 0, k = 0;
cin >> N >> k;
vector<vector<int>> g(7, vector<int>(7, 0));
for (int i = 0; i < N - 1; i++) {
int a = 0, b = 0;
cin >> a >> b;
g[a - 1][b - 1] = 1;
g[b - 1][a - 1] = 1;
}
vector<int> path;
path.push_back(2);
int res = eat(g, 2, path);
for (int i = 0; i < path.size(); i++) {
cout << path[i] + 1 << endl;
}
return 0;
}