小红书第三题AK代码,最大匹配数(也就是匈牙利算法)

import java.util.*;
public class Main {
    //感觉是用二分图的完美匹配去做
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] a=new int[n];
        Node[] node=new Node[n+1];
        boolean[] visit=new boolean[n+1];
        for(int i=0;i<=n;i++){
            node[i]=new Node();
            node[i].idx=i;
        }
        for(int i=0;i<n-1;i++){
            a[i]=sc.nextInt();
            node[i+2].list.add(node[a[i]]);
            node[a[i]].list.add(node[i+2]);
        }
        int res=0;
        for(int i=1;i<=n;i++){
            if(visit[i])
                continue;
            if(node[i].curlink==null){
                Node link=node[i].find(visit);
                if(link!=null){
                    node[i].curlink=link;
                    node[link.idx].curlink=node[i];
                    visit[i]=true;
                    visit[link.idx]=true;
                    res++;
                }
            }
        }
        System.out.println(res);
    }
}
class Node{
    List<Node> list=new ArrayList<>();
    int idx;
    Node curlink;
    public Node find(boolean[] visit){
        for(Node node:list){
            if(node.curlink==null){
                return node;
            }else{
                if(dfs(node.curlink,visit)){
                    return node;
                }
            }
        }
        return null;
    }
    public boolean dfs(Node o,boolean[] visit){
        for(Node node:o.list){
            if(node.curlink==null){
                node.curlink=o;
                o.curlink=node;
                visit[o.idx]=true;
                visit[node.idx]=true;
                return true;
            }
        }
        return false;
    }
}

#小红书笔试#
全部评论
想到匈牙利算法了但是写不出暴力也能过
点赞 回复 分享
发布于 2022-08-28 18:14 湖南

相关推荐

不愿透露姓名的神秘牛友
07-15 17:46
暑期就挂了,秋招还有机会吗
大聪明777:研发提前批,14号刚开的,官网上面的配图上有写。提前批没过的话,秋招还可以投,不过前面的笔试/面试记录会被保留,供秋招参考
26届校招投递进展
点赞 评论 收藏
分享
S_Holmes:一想到我苦苦追求的迪子私下里却是985的马子,我的心就在滴血😭😭😭
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务