题解 第一题
2021/8/19 6:36:04
本文主要是介绍题解 第一题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
传送门
整题只靠一个结论:轻链一定比重链先访问
然而我没想到
暴力都不知道怎么打
Code:
#include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 100010 #define ll long long #define fir first #define sec second #define make make_pair #define pb push_back //#define int long long char buf[1<<21], *p1=buf, *p2=buf; #define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf, 1, 1<<21, stdin)), p1==p2?EOF:*p1++) inline int read() { int ans=0, f=1; char c=getchar(); while (!isdigit(c)) {if (c=='-') f=-f; c=getchar();} while (isdigit(c)) {ans=(ans<<3)+(ans<<1)+(c^48); c=getchar();} return ans*f; } int n; int head[N], size, dep[N], mdep[N], siz[N], ans, dis; vector< pair<int, int> > order[N]; struct edge{int to, next;}e[N<<1]; inline void add(int s, int t) {e[++size].to=t; e[size].next=head[s]; head[s]=size;} void dfs1(int u, int fa) { siz[u]=1; for (int i=head[u],v; ~i; i=e[i].next) { v = e[i].to; if (v==fa) continue; mdep[v]=dep[v]=dep[u]+1; dfs1(v, u); mdep[u]=max(mdep[u], mdep[v]); siz[u]+=siz[v]; order[u].pb(make(mdep[v], v)); } sort(order[u].begin(), order[u].end()); //for (auto it:order[u]) cout<<"it: "<<it.fir<<' '<<it.sec<<endl; } void dfs2(int u, int fa) { //cout<<"dfs2 "<<u<<' '<<fa<<' '<<dis<<endl; if (dis<dep[u]-1) ans+=dis; else ans+=dep[u]-1; //cout<<"ans: "<<ans<<endl; dis=0; for (auto v:order[u]) { if (v.sec==fa) continue; ++dis; dfs2(v.sec, u); } ++dis; } signed main() { memset(head, -1, sizeof(head)); n=read(); for (int i=1,u,v; i<n; ++i) { u=read(); v=read(); add(u, v); add(v, u); } dep[1]=1; dfs1(1, 0); dfs2(1, 0); printf("%d\n", ans); return 0; }
这篇关于题解 第一题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?