需要注意的是自洽的判断,如果起点是1,终点是3
那么1->3->2;这个是可以的。
但是 1->3; 1->2; 这样两条边是不可以的。
int n, m;
int sx, sy;
vector<int> g[N];
int in[N], f[N];
int check;
int dfs(int u)
{
if (g[u].size() == 0 && u != sy)
check = 0;
if (f[u])
return f[u];
for (auto ed : g[u])
{
f[u] += dfs(ed);
}
return f[u];
}
void solve()
{
check = 1;
cin >> n >> m;
for (int i = 1; i <= m; i++)
{
int a, b;
cin >> a >> b;
g[a].pb(b);
in[b]++;
}
cin >> sx >> sy;
f[sy] = 1;
dfs(sx);
cout << f[sx] << ' ';
if (check)
cout << "Yes" << endl;
else
cout << "No" << endl;
}