File tree 1 file changed +39
-0
lines changed
1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public List <Integer > findAllPeople (int n , int [][] meetings , int firstPerson ) {
3
+ Map <Integer , List <int []>> graph = new HashMap <>();
4
+ for (int [] meeting : meetings ) {
5
+ int x = meeting [0 ];
6
+ int y = meeting [1 ];
7
+ int time = meeting [2 ];
8
+ graph .computeIfAbsent (x , k -> new ArrayList <>()).add (new int []{time , y });
9
+ graph .computeIfAbsent (y , k -> new ArrayList <>()).add (new int []{time , x });
10
+ }
11
+ int [] earliestTime = new int [n ];
12
+ Arrays .fill (earliestTime , Integer .MAX_VALUE );
13
+ earliestTime [0 ] = 0 ;
14
+ earliestTime [firstPerson ] = 0 ;
15
+ Queue <int []> queue = new LinkedList <>();
16
+ queue .add (new int []{0 , 0 });
17
+ queue .add (new int []{firstPerson , 0 });
18
+ while (!queue .isEmpty ()) {
19
+ int [] removed = queue .poll ();
20
+ int person = removed [0 ];
21
+ int time = removed [1 ];
22
+ for (int [] conn : graph .getOrDefault (person , new ArrayList <>())) {
23
+ int t = conn [0 ];
24
+ int p = conn [1 ];
25
+ if (t >= time && earliestTime [p ] > t ) {
26
+ earliestTime [p ] = t ;
27
+ queue .add (new int []{p , t });
28
+ }
29
+ }
30
+ }
31
+ List <Integer > result = new ArrayList <>();
32
+ for (int i = 0 ; i < n ; i ++) {
33
+ if (earliestTime [i ] != Integer .MAX_VALUE ) {
34
+ result .add (i );
35
+ }
36
+ }
37
+ return result ;
38
+ }
39
+ }
You can’t perform that action at this time.
0 commit comments