关注
#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
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 第一次找实习,我建议__ #
10559次浏览 133人参与
# 如果今天是你的last day,你会怎么度过? #
42490次浏览 279人参与
# 联影求职进展汇总 #
95810次浏览 483人参与
# 秋招暂停,我将对以下公司做出处罚__ #
19459次浏览 81人参与
# 四大天坑是哪四家? #
88537次浏览 227人参与
# 从mentor身上学到了__ #
10646次浏览 153人参与
# 如果有时光机,你最想去到哪个年纪? #
60821次浏览 833人参与
# 你听到的“最没用”的秋招建议 #
15943次浏览 182人参与
# 2025秋招体验点评 #
39134次浏览 387人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
3207次浏览 17人参与
# 非技术岗简历怎么写 #
258829次浏览 3093人参与
# 工作以后,你父母对你啥态度 #
7100次浏览 70人参与
# 什么样的公司千万别去 #
10244次浏览 86人参与
# 机械人的保底公司是哪一家? #
43259次浏览 139人参与
# 小红书取消大小周 #
78709次浏览 180人参与
# 你遇到过哪些神仙同事 #
120614次浏览 753人参与
# 选完offer后,你后悔学机械吗? #
45901次浏览 257人参与
# 薪资要看总包还是月薪? #
13036次浏览 141人参与
# 实习生的蛐蛐区 #
833066次浏览 4036人参与
# 秋招签约后的心态变化 #
103641次浏览 917人参与
# 机械人值得去的半导体企业 #
31000次浏览 179人参与
