社区讨论

只过了4个点求调

P1922女仆咖啡厅桌游吧参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mlhi26b0
此快照首次捕获于
2026/02/11 11:58
上周
此快照最后确认于
2026/02/12 23:25
7 天前
查看原帖
CPP
#include <iostream>
#include <bits/stdc++.h>
#include <cstring>

using namespace std;
const int N=1e5+10;
int f[N],e[N],h[N],ne[N],d[N],idx;
bool st[N];
int n;
void add(int a,int b)
{
    e[idx]=b;
    ne[idx]=h[a];
    h[a]=idx++;
}
void dfs(int u,int fa)
{
    st[u]=1;
    int sum=0;
    int free=1;
    for(int i=h[u];~i;i=ne[i])
    {
        int t=e[i];
        if(t==fa) continue;
        //cout << h[t] << endl;
        if(d[t]==1) 
        {
            free++;
            //cout << free;
        }
        else
        {
            dfs(t,u);
            //cout << f[t] << endl;
            sum+=f[t];
        }
    }
    sum+=free/2;
    //cout << free << endl;
    f[u]=sum;
}
int main()
{
    memset(h,-1,sizeof h);
    cin >> n;
    for(int i=1;i<n;i++)
    {
        int u,v;
        scanf("%d %d",&u,&v);
        add(u,v);
        add(v,u);
        d[u]++;
        d[v]++;
    }

    dfs(1,0);
    cout << f[1];
    return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...