要是我就选杭州,补贴多
点赞 评论

相关推荐

import java.util.*;public class Main {static Scanner in=new Scanner(System.in);public static void main(String[] args) {int n,m;n=in.nextInt();m=in.nextInt();int []inDegree=new int[n+1];List<List<Integer>> umap=new ArrayList<>();for (int i = 0; i < n; i++) {umap.add(new ArrayList<>());}for (int i = 0; i < m; i++) {int s,t;s=in.nextInt();t=in.nextInt();//记录s指向的节点有哪些,然后让t入度自增umap.get(s).add(t);inDegree[t]++;}//把入度为0的点都加入队列Deque<Integer> queue=new ArrayDeque<>();for (int i = 0; i < n; i++) {if (inDegree[i]==0){queue.offer(i);}}List<Integer>result=new ArrayList<>();//遍历队列while (!queue.isEmpty()){//加入结果int cur=queue.poll();result.add(cur);//获取当前节点指向的节点,并把指向节点的入度减一,如果入度为0加入队列for (Integer i : umap.get(cur)) {inDegree[i]--;if (inDegree[i]==0){queue.offer(i);}}}//如果有节点没有加入,说明成环无答案if (result.size()!=n){System.out.println(-1);return;}System.out.print(result.get(0));for (int i = 1; i <result.size() ; i++) {System.out.print(" "+result.get(i));}}}
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务