关注
#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
相关推荐
牛客热帖
更多
正在热议
更多
# 除了Java,最推荐学什么技术? #
443次浏览 13人参与
# AI时代的工作 VS 传统时代的工作,有哪些不同? #
651次浏览 27人参与
# 滴滴求职进展汇总 #
298320次浏览 2438人参与
# 秋招报数:你投了多少家公司? #
148131次浏览 944人参与
# 你觉得早上几点上班合适? #
94172次浏览 352人参与
# 如何提高实习转正率? #
80616次浏览 487人参与
# 一人一个landing小技巧 #
143820次浏览 1500人参与
# 我和mentor的爱恨情仇 #
102320次浏览 924人参与
# 聊聊你的被动加班经历 #
7268次浏览 90人参与
# 为了秋招你都做了哪些准备? #
31449次浏览 532人参与
# Tplink求职进展汇总 #
199050次浏览 937人参与
# 你觉得什么岗位会被AI替代 #
35163次浏览 233人参与
# 实习期间如何提升留用概率? #
230719次浏览 1785人参与
# 牛客十周岁生日快乐 #
207432次浏览 1936人参与
# 你觉得mentor喜欢什么样的实习生 #
44979次浏览 986人参与
# 美的求职进展汇总 #
343986次浏览 2064人参与
# 用一句话形容你的团队氛围 #
36243次浏览 281人参与
# 互联网公司评价 #
480242次浏览 4095人参与
# 秋招的破防瞬间 #
500454次浏览 2595人参与
# 秋招想进国企该如何准备 #
123059次浏览 611人参与
查看12道真题和解析