Min Malware

 avatar
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