关注
#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
牛客热帖
更多
正在热议
更多
# xx岗简历求拷打 #
1359次浏览 19人参与
# 金三银四,你有感觉到吗 #
686512次浏览 6063人参与
# 有转正机会的小厂实习值得去吗? #
2212次浏览 33人参与
# 2024开工大吉 #
26730次浏览 104人参与
# 你最讨厌面试被问什么 #
3408次浏览 44人参与
# 哪些公司开春招了? #
27953次浏览 188人参与
# 机械制造2024笔面经 #
1540084次浏览 13005人参与
# 毕业季等于分手季吗 #
54333次浏览 649人参与
# 秋招踩过的“雷”,希望你别再踩 #
186960次浏览 1692人参与
# 牛客租房专区 #
156493次浏览 1737人参与
# 文科生还参加今年的春招吗 #
12964次浏览 98人参与
# 携程求职进展汇总 #
873485次浏览 5675人参与
# 找工作中的小确幸 #
81432次浏览 451人参与
# 你的秋招第一场笔试是哪家 #
291683次浏览 2082人参与
# 如何缓解入职前的焦虑 #
260984次浏览 1466人参与
# 大家每天通勤多久? #
86072次浏览 815人参与
# 实习越久越好,还是多多益善? #
77977次浏览 343人参与
# 找实习多的是你不知道的事 #
1805039次浏览 20688人参与
# 职场吐槽大会 #
326914次浏览 2253人参与
# 记录实习开销 #
187165次浏览 950人参与
查看19道真题和解析