File tree Expand file tree Collapse file tree 1 file changed +62
-0
lines changed
Expand file tree Collapse file tree 1 file changed +62
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` java
2+ import java.util.* ;
3+ import java.io.* ;
4+
5+ public class Main {
6+ static BufferedReader br = new BufferedReader (new InputStreamReader (System . in));
7+ static BufferedWriter bw = new BufferedWriter (new OutputStreamWriter (System . out));
8+ static StringTokenizer st;
9+ static StringBuilder sb = new StringBuilder ();
10+ static int N ,M ;
11+ static int [][] cities;
12+ static int [] travel;
13+ static Set<Integer > connected = new HashSet<> ();
14+
15+ public static void main (String [] args ) throws Exception {
16+ N = Integer . parseInt(br. readLine());
17+ M = Integer . parseInt(br. readLine());
18+ cities = new int [N + 1 ][N + 1 ];
19+ travel = new int [M ];
20+
21+ for (int i = 1 ; i <= N ; i++ ) {
22+ st = new StringTokenizer (br. readLine());
23+ for (int j = 1 ; j <= N ; j++ ) {
24+ cities[i][j] = Integer . parseInt(st. nextToken());
25+ }
26+ }
27+
28+ st = new StringTokenizer (br. readLine());
29+ for (int i = 0 ; i < M ; i++ ) {
30+ travel[i] = Integer . parseInt(st. nextToken());
31+ }
32+
33+ BFS (travel[0 ]);
34+ for (int i = 0 ; i < M ; i++ ) {
35+ if (! connected. contains(travel[i])){
36+ bw. write(" NO" );
37+ bw. close();
38+ return ;
39+ }
40+ }
41+ bw. write(" YES" );
42+ bw. close();
43+ }
44+ public static void BFS (int start ){
45+ ArrayDeque<Integer > q = new ArrayDeque<> ();
46+ boolean [] visited = new boolean [N + 1 ];
47+ q. offer(start);
48+ visited[start] = true ;
49+
50+ while (! q. isEmpty()){
51+ int cur = q. poll();
52+ connected. add(cur);
53+
54+ for (int i= 1 ;i<= N ;i++ ) {
55+ if (cities[cur][i] == 0 || visited[i]) continue ;
56+ q. offer(i);
57+ visited[i] = true ;
58+ }
59+ }
60+ }
61+ }
62+ ```
You can’t perform that action at this time.
0 commit comments