题解-空间之刀
2026-05-02 13:25:04
发布于:上海
5阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
bool flag, vis[100];
vector<int> a[100];
void dfs(int n, int target) {
vis[n] = 1;
if (n == target) {
flag = true;
return;
}
for (int i = 0; i < a[n].size(); i++) {
int next = a[n][i];
if (!vis[next]) {
dfs(next, target);
if (flag) return;
}
}
}
int main() {
int n; cin >> n;
for (int i = 1; i < n; i++) {
int x, y;
cin >> x >> y;
a[x-1].push_back(y-1); // 统一存储为 0-based
}
for (int target = 0; target < n; target++) {
bool ok = true;
for (int start = 0; start < n; start++) {
if (start == target) continue;
memset(vis, 0, sizeof vis);
flag = false;
dfs(start, target);
if (!flag) {
ok = false;
break;
}
}
if (ok) {
cout << target + 1 << endl;
return 0;
}
}
cout << -1 << endl;
return 0;
}
关注我,有更多时间、空间之刀,助你掌控复杂度!
记得给我点个赞!
这里空空如也




有帮助,赞一个