Min Malware
unknown
c_cpp
a year ago
1.3 kB
6
Indexable
void dfs(int node,vector<int>&vis, vector<vector<int>> &adj,int block) { vis[node]=1; for(auto it:adj[node]) { if(vis[it]==0 && it!=block) { dfs(it,vis,adj,block); } } } class Solution { public: int minMalwareSpread(vector<vector<int>>& g, vector<int>& ini) { int n=g.size(); int m=ini.size(); vector<vector<int>> adj(n); for(int i=0;i<n;++i) { for(int j=0;j<n;++j) { if(g[i][j]==1) { adj[i].push_back(j); } } } sort(ini.begin(),ini.end()); int ans; int mini=1e9; for(int k=0;k<m;++k) { vector<int> vis(n,0); for(int j=0;j<m;++j) { if(j!=k) { if(vis[ini[j]]==0) dfs(ini[j],vis,adj,ini[k]); } } int tot=0; for(int i=0;i<n;++i) { if(vis[i]==1) tot++; } if(mini>tot) { ans=ini[k]; mini=tot; } } return ans; } };
Editor is loading...
Leave a Comment