RE 0分求调
#include<bits/stdc++.h>
using namespace std;
const int N = 100005;
int n, f[N], in[N], out[N], cnt, deg[N];
vector<int> g[N];
queue<int> q;
bool topo()
{
for(int i = 1; i <= n; i++)
if(!in[i])
{
q.push(i);
cnt++;
f[i] = 1;
}
while(!q.empty())
{
int u = q.front();
q.pop();
if(out[u] > 1)
continue;
for(int v:g[u])
{
if(--in[v] == 0)
q.push(v);
f[v] += f[u];
}
}
}
int main()
{
cin >> n;
for(int i = 1, a, b; i < n; i++)
{
cin >> a >> b;
g[a].push_back(b);
out[a]++;
in[b]++;
deg[b]++;
}
topo();
for(int i = 1; i <= n; i++)
if(f[i] == cnt && deg[i])
cout << i << endl;
return 0;
}