Min Malware
unknown
c_cpp
a year ago
1.3 kB
10
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