1 条题解

  • 0
    @ 2025-1-7 11:49:15

    C++ :

    #include<iostream>
    #include<cstdio>
    #include<vector>
    using namespace std;
    const int maxn=377;
    int n,p,f[maxn],s=0,ans=0;
    vector<int> d[maxn],a[maxn];
    void init(int u,int dep)
    {
        d[dep].push_back(u);
        for(int i=0; i<a[u].size(); i++)
        {
            init(a[u][i],dep+1);
        }
    }
    int work(int u,int t)
    {
        int ss=1; f[u]=t;
        for(int i=0; i<a[u].size(); i++)
        {
            ss+=work(a[u][i],t);
        }
        return ss;
    }
    void dfs(int dep)
    {
        for(int i=0; i<d[dep].size(); i++)
        {
            if(f[d[dep][i]]) continue;
            s+=work(d[dep][i],1); ans=max(ans,s);
            dfs(dep+1); 
            s-=work(d[dep][i],0);
        }
    }
    int main()
    {
        scanf("%d%d",&n,&p);
        for(int i=1; i<=p; i++)
        {
            int x,y;
            scanf("%d%d",&x,&y);
            if(x>y) swap(x,y);
            a[x].push_back(y);
        }
        init(1,1);
        dfs(2);
        printf("%d",n-ans);
    }
    

    信息

    ID
    1086
    时间
    1000ms
    内存
    256MiB
    难度
    (无)
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者