-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMinimize-Malware-Spread-II.cpp
39 lines (39 loc) · 1.2 KB
/
Minimize-Malware-Spread-II.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class Solution
{
public:
int minMalwareSpread(vector<vector<int>> &graph, vector<int> &initial)
{
int n = graph.size(), ans = 0x7fffffff, idx = -1;
sort(initial.begin(), initial.end());
for (const int &ini : initial)
{
set<int> flued;
for (const int &i : initial)
if (i != ini)
flued.insert(i);
// cout << "ini: " << ini << endl;
bool flag = false;
do
{
flag = false;
for (int i = 0; i < n; i++)
if (!flued.count(i) && i != ini)
for (const int &j : flued)
if (graph[i][j])
{
// cout << i << ' ' << j << endl;
flued.insert(i);
flag = true;
break;
};
} while (flag);
// cout << flued.size() << endl;
if (flued.size() < ans)
{
ans = flued.size();
idx = ini;
};
};
return idx;
}
};