Skip to content

Commit fe4cfb8

Browse files
committed
Time: 122 ms (5.25%), Space: 60.2 MB (5.51%) - LeetHub
1 parent b0017e0 commit fe4cfb8

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
class Solution {
2+
public:
3+
4+
int dfs(int src,int par,map<int,set<int>>&list,map<int,int>&visit)
5+
{
6+
if(visit[src])
7+
return 0;
8+
int count=1;
9+
visit[src]=1;
10+
for(auto child:list[src])
11+
{
12+
if(child==par||visit[child])continue;
13+
count+=dfs(child,src,list,visit);
14+
}
15+
return count;
16+
}
17+
18+
int countServers(vector<vector<int>>& grid) {
19+
map<int,set<int>>list;
20+
int n=grid.size(),m=grid[0].size();
21+
for(int i=0;i<n;i++)
22+
{
23+
for(int j=0;j<m;j++)
24+
{
25+
if(!grid[i][j])continue;
26+
int u=i*m+j;
27+
for(int k=j+1;k<m;k++)
28+
{
29+
if(!grid[i][k])continue;
30+
int v=i*m+k;
31+
list[u].insert(v);
32+
}
33+
}
34+
}
35+
for(int i=0;i<m;i++)
36+
{
37+
for(int j=0;j<n;j++)
38+
{
39+
if(!grid[j][i])continue;
40+
int u=j*m+i;
41+
for(int k=j+1;k<n;k++)
42+
{
43+
if(!grid[k][i])continue;
44+
int v=k*m+i;
45+
list[u].insert(v);
46+
}
47+
}
48+
}
49+
int count=0;
50+
map<int,int>visit;
51+
for(auto x:list)
52+
{
53+
count+=dfs(x.first,-1,list,visit);
54+
}
55+
return count;
56+
}
57+
};

0 commit comments

Comments
 (0)