题目描述


图的核心数据结构
static class Node{public int data;public int in;public List<Node> nexts;public Node(int d){data =d;in =0;nexts = new ArrayList<>();}}
Java答案
class Solution {public boolean validPath(int n, int[][] edges, int source, int destination) {Map<Integer,Node> tp = new HashMap<>();for (int i = 0; i <n ; i++) {tp.put(i,new Node(i));}for (int[] v : edges) {int a =v[0],b=v[1];
Node na = tp.get(a);Node nb = tp.get(b);na.in++;nb.in++;na.nexts.add(nb);nb.nexts.add(na);}Queue<Node> q = new LinkedList<>();Set<Node> visited = new HashSet<>();Node sourceNode = tp.get(source);q.add(sourceNode);visited.add(sourceNode);while (!q.isEmpty()){int size= q.size();for (int i = 0; i <size ; i++) {Node poll = q.poll();if(poll.data == destination) return true;for (Node next : poll.nexts) {if(visited.contains(next)) continue;q.add(next);visited.add(next);}}}return false;}static class Node{public int data;public int in;public List<Node> nexts;public Node(int d){data =d;in =0;nexts = new ArrayList<>();}}
}