本文主要是介绍928. 尽量减少恶意软件的传播 II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
928. 尽量减少恶意软件的传播 II
题目链接:928. 尽量减少恶意软件的传播 II
代码如下:
class Solution {
public:int minMalwareSpread(vector<vector<int>>& graph, vector<int>& initial) {unordered_set<int> st(initial.begin(),initial.end());vector<bool> visit(graph.size(),false);int node_id,size;function<void(int)> dfs=[&](int x){visit[x]=true;size++;for(int y=0;y<graph[x].size();y++){if(graph[x][y]==0) continue;if(st.contains(y)){if(node_id!=-2&&node_id!=y){node_id=node_id==-1?y:-2;}}else if(!visit[y]){dfs(y);}}};unordered_map<int,int> cnt;for(int i=0;i<graph.size();i++){if(visit[i]||st.contains(i)) continue;node_id=-1;size=0;dfs(i);if(node_id>=0){cnt[node_id]+=size;}}int max_cnt=0;int min_node_id=0;for(auto [node_id,c]:cnt){if(c>max_cnt||c==max_cnt&&node_id<min_node_id){max_cnt=c;min_node_id=node_id;}}retArn cnt.empty()?ranges::min(initial):min_node_id;}
};
这篇关于928. 尽量减少恶意软件的传播 II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!