题解 | 牛群的喂养顺序
牛群的喂养顺序
https://www.nowcoder.com/practice/ce8860b6a8c74dfd8ccd15998970e447
- 典型拓扑
- 注意入度和建图即可。
import java.util.*; public class Solution { public boolean canFeedAllCows (int numCows, int[][] feedOrders) { int[] inDegree = new int[numCows]; boolean[][] graph = new boolean[numCows][numCows]; for (int i = 0; i < feedOrders.length; ++i) { ++inDegree[feedOrders[i][0]]; graph[feedOrders[i][1]][feedOrders[i][0]] = true; } Deque<Integer> q = new ArrayDeque<>(); for (int i = 0; i < numCows; ++i) { if (inDegree[i] == 0) { q.addLast(i); } } int visitedCnt = 0; while (!q.isEmpty()) { final int u = q.removeFirst(); visitedCnt++; for (int v = 0; v < numCows; ++v) { if (graph[u][v]) { if (--inDegree[v] == 0) { q.addLast(v); } } } } return visitedCnt == numCows; } }