拓扑排序的思路,可惜当时没做完 import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Queue; import java.util.Scanner; import java.util.TreeMap; public class Demo3 {     public static void main(String[] args) {         // TODO Auto-generated method stub         Scanner in = new Scanner(System.in);         int n = in.nextInt();         int num[][] = new int[n-1][2];         for(int i=0;i<n-1;i++) {             num[i][0] = in.nextInt();             num[i][1] = in.nextInt();         }         int indrgee[] = new int[n+1];         //Map<Integer,List<Integer>> map = new HashMap<Integer, List<Integer>>();         List<Integer> list = new ArrayList<>();         for(int i=1;i<=n;i++) list.add(i);         for(int i=0;i<n-1;i++) {             /*if(map.containsKey(num[i][0])) {                 map.get(num[i][0]).add(num[i][1]);             }else {                 List<Integer> list = new ArrayList<Integer>();                 list.add(num[i][1]);                 map.put(num[i][0], list);             }*/             indrgee[num[i][0]]++;         }         Map<Integer, Integer> treemap = new TreeMap<>();         boolean isDelete[] = new boolean[n+1];         //int count=0;         while(list.size()>0) {             Queue<Integer> queue = new LinkedList<>();             for(int i=1;i<=n;i++) {                 if(!isDelete[i]&&(indrgee[i]==0||indrgee[i]==1)) {                     queue.offer(i);                     list.remove(new Integer(i));                     isDelete[i]=true;                     /*System.out.println("删除:"+i);                     for(int j:list) {                         System.out.println(j);                     }*/                 }             }                          while(!queue.isEmpty()) {                 int temp = queue.poll();                 for(int i=0;i<n-1;i++) {                     if(num[i][1]==temp) {                         indrgee[num[i][0]]--;                     }                 }                 if(!treemap.containsKey(temp)) {                     treemap.put(temp, 1);                 }else {                     treemap.put(temp, treemap.get(temp)+1);                 }             }                          for(int i:list) {                 if(!treemap.containsKey(i)) {                     treemap.put(i, 1);                 }else {                     treemap.put(i, treemap.get(i)+1);                 }             }         }         for(Map.Entry<Integer, Integer> entry:treemap.entrySet()) {             System.out.println("节点:"+entry.getKey()+",次数:"+entry.getValue());         }         /*List<Integer> res = new ArrayList<Integer>(treemap.values());         for (int i = 0; i < res.size(); i++) {             if(i==res.size()-1) {                 System.out.print(res.get(i));             }else {                 System.out.print(res.get(i)+" ");             }         }*/     } }
点赞 评论

相关推荐

WillingLing:查看图片
点赞 评论 收藏
分享
喜欢核冬天的哈基米很想上市:会爆NullPointerException的
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务