关注
#include <bits/stdc++.h>
#include <stdio.h>
#define N 100005
using namespace std;
struct edge
{
int from;
int to;
edge(int i=0,int j=0)
{
from = i;to = j;
}
};
vector<edge>mp;
int visit[N];
int num[N];
int depth = 1;
int maxdepth = 1;
int cmp(edge l,edge r)
{
return l.from < r.from;
}
void dfs(int from)
{
edge tmp(from,0);
depth++;
maxdepth = max(maxdepth,depth);
auto pos = lower_bound(mp.begin(),mp.end(),tmp,cmp);
for(auto it=pos;it!=mp.end();it++)
{
if(it->from == from && !visit[it->to])
{
//printf("%d to %d\n",it->from,it->to);
visit[it->to] = 1;
num[depth] ++;
dfs(it->to);
}
if(it->from != from)
break;
}
depth--;
}
int main()
{
int n;
int ans = 0;
cin>>n;
for(int i=0;i<n-1;i++)
{
int a,b;
cin>>a>>b;
edge tmp(a,b);
mp.push_back(tmp);
}
sort(mp.begin(),mp.end(),cmp);
visit[1] = 1;
dfs(1);
for(int i=2;num[i];i++)
{
ans += (num[i] - 1) * 2 + 1;
//printf("num[%d] = %d\n",i,num[i]);
}
cout<<ans<<endl;
return 0;
}
第一题,dfs记录树的深度的数量存在num数组
ans += (num[i] - 1) * 2 + 1;
查看原帖
点赞 5
相关推荐
查看5道真题和解析
点赞 评论 收藏
转发
点赞 评论 收藏
转发
牛客热帖
正在热议
# 牛客帮帮团来啦!有问必答 #
892720次浏览 14038人参与
# 机械制造薪资爆料 #
328319次浏览 3825人参与
# 大家都开始春招面试了吗 #
271316次浏览 3976人参与
# 晒一晒我的offer #
3544872次浏览 55979人参与
# 金三银四,你有感觉到吗 #
337549次浏览 4300人参与
# 腾讯工作体验 #
138497次浏览 1361人参与
# 25届如何提前做秋招准备? #
7889次浏览 236人参与
# 我发现了面试通关密码 #
359678次浏览 6761人参与
# 投了多少份简历才上岸 #
62537次浏览 998人参与
# 实习与准备秋招该如何平衡 #
184277次浏览 3271人参与
# 如何缓解入职前的焦虑 #
39229次浏览 403人参与
# 面试题刺客退退退 #
47548次浏览 873人参与
# 如果可以选,你最想从事什么工作 #
190795次浏览 3129人参与
# 24届软开秋招面试经验大赏 #
1076423次浏览 17090人参与
# 校招入职后的感受 #
57732次浏览 1065人参与
# 在国企工作的人,躺平了吗? #
101339次浏览 1289人参与
# 0offer是寒冬太冷还是我太菜 #
435906次浏览 4994人参与
# 荣耀求职进展汇总 #
76624次浏览 780人参与
# 机械人,你的秋招第一份简历被谁挂了 #
34484次浏览 581人参与
# 求职遇到的搞笑事件 #
20198次浏览 293人参与