关注
#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
相关推荐
我的代码出BUG了:@美团@腾讯@字节跳动@阿里巴巴。你们好好看看吧 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 同bg的你秋招战况如何? #
171738次浏览 999人参与
# 扒一扒那些奇葩实习经历 #
125457次浏览 1096人参与
# 联影求职进展汇总 #
49808次浏览 320人参与
# 你实习是赚钱了还是亏钱了? #
26842次浏览 224人参与
# 去哪儿求职进展汇总 #
145558次浏览 994人参与
# 用一句话形容你的团队氛围 #
16793次浏览 173人参与
# 京东开奖 #
458670次浏览 2540人参与
# 毕业论文进行时 #
5209次浏览 74人参与
# 面对逼签的应对技巧 #
5484次浏览 29人参与
# 我来点评面试官 #
14366次浏览 103人参与
# 牛友的国庆旅行碎片 #
20875次浏览 125人参与
# 今年秋招是回暖还是遇冷 #
28029次浏览 173人参与
# 秋招开始捡漏了吗 #
73054次浏览 513人参与
# 找工作八股要背到什么程度? #
15971次浏览 232人参与
# 三一集团提前批进度交流 #
41402次浏览 229人参与
# 社会教会你的第一课 #
110080次浏览 859人参与
# 工作后,谈恋爱还和学生时代一样吗? #
41021次浏览 377人参与
# 上班后,才发现大学__白学了 #
14197次浏览 100人参与
# 你找工作是从容有余 or 匆忙滚爬? #
10198次浏览 85人参与
# 阿里云工作体验 #
33332次浏览 108人参与
# 你的领导最像哪种动物,为什么? #
25717次浏览 136人参与
# 职场破冰,你们都聊什么? #
30871次浏览 154人参与
360集团公司福利 405人发布
查看18道真题和解析