import java.util.*; public class Demo02 {     public static class MyMap{         public TreeMap<Integer, HashSet<Integer>> _map;         public MyMap() {             this._map =new TreeMap<>();         }         void put(int maleNum, int femaleNum){             if(_map.containsKey(maleNum)){                 _map.get(maleNum).add(femaleNum);             }else {                 HashSet<Integer> tmp=new HashSet<>();                 tmp.add(femaleNum);                 _map.put(maleNum,tmp);             }         }         int getMaxLinkCount(){             int maxSize=0;             Set<Map.Entry<Integer, HashSet<Integer>>> entries = _map.entrySet();             for(Map.Entry<Integer, HashSet<Integer>> iter:entries){                 maxSize=Math.max(iter.getValue().size(),maxSize);             }             return maxSize;         }         int getMaxLinkKey(int maxSize){             Set<Map.Entry<Integer, HashSet<Integer>>> entries = _map.entrySet();             for(Map.Entry<Integer, HashSet<Integer>> iter:entries){                 if(iter.getValue().size()==maxSize){                     return iter.getKey();                 }             }             return -1;         }         Set<Integer> remove(int key){             Set<Integer> res=null;             if(_map.containsKey(key)){                 res=_map.remove(key);             }             return res;         }         void removeValue(int key,int value){             _map.get(key).remove(value);             if(_map.get(key).size()==0){                 _map.remove(key);             }         }     }     public static void main(String[] args) {         Scanner in=new Scanner(System.in);         int n=in.nextInt();         int m=in.nextInt();         MyMap maleMap=new MyMap();         MyMap femaleMap=new MyMap();         for(int i=0;i<m;i++){             int tmp1=in.nextInt();             int tmp2=in.nextInt();             maleMap.put(tmp1,tmp2);             femaleMap.put(tmp2,tmp1);         }         int count=0;         ArrayList<Integer> res=new ArrayList<>();         while (maleMap._map.size()>0){             count++;             int max1=maleMap.getMaxLinkCount();             int max2=femaleMap.getMaxLinkCount();             int max=Math.max(max1,max2);             MyMap toRemove=max1<max2?femaleMap:maleMap;             int key=toRemove.getMaxLinkKey(max);             Set<Integer> set=toRemove.remove(key);             MyMap another=max1<max2?maleMap:femaleMap;             for(int iter:set){                 another.removeValue(iter,key);             }             res.add(key);         }         System.out.println(count);         Collections.sort(res);//这句话当时忘加了。。。a了9%         for(int iter:res){             System.out.println(iter);         }     } }
点赞 6

相关推荐

Lorn的意义:1.你这根本就不会写简历呀,了解太少了 2.你这些项目经历感觉真的没啥亮点啊,描述的不行,重写书写一下让人看到核心,就继续海投 注意七八月份ofer还是比较多的,越往后机会越少,抓住时机,抓紧检查疏漏,加油查看图片
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务