2368. 受限条件下可到达节点的数目
题目链接:2368. 受限条件下可到达节点的数目
代码如下:
//深度优先遍历
//参考:https://leetcode.cn/problems/reachable-nodes-with-restrictions/solutions/2662538/shu-shang-dfspythonjavacgojsrust-by-endl-0r3a
class Solution {
public:
vector<vector<int>> g;
public:
int dfs(int x,int fa)
{
int count=1;
for(int y:g[x])
{
if(y!=fa)
count+=dfs(y,x);
}
return count;
}
int reachableNodes(int n, vector<vector<int>>& edges, vector<int>& restricted)
{
unordered_set<int> r(restricted.begin(),restricted.end());
g.resize(n);
for(auto& edge:edges)
{
int x=edge[0],y=edge[1];
if(!r.count(x)&&!r.count(y))// 都不受限才连边
{
g[x].emplace_back(y);
g[y].emplace_back(x);
}
}
return dfs(0,-1);
}
};