樹的DFS序列,時間戳,樹的深度,重心
ACM題集:https://blog.csdn.net/weixin_39778570/article/details/83187443
- 樹的DFS序,時間戳
/*樹的DFS序*/
#include<bits/stdc++.h>
#define ll long long
#define fo(i,j,n) for(register int i=j; i<=n; ++i)
using namespace std;
const int maxn = 1e6+5;
int nxt[maxn],head[maxn],ver[maxn],deg[maxn],tot;
void add(int x,int y){
ver[++tot]=y, nxt[tot]=head[x], head[x]=tot;
}
// 樹的DFS序
int a[maxn],vis[maxn],m;
void dfs(int x){
a[++m] = x; // a陣列儲存DFS序
vis[x] = 1;
for(int i=head[x]; i; i=nxt[i]){
int y=ver[i];
if(vis[y])continue;
dfs(y);
}
a[++m] = x;
}
// 時間戳
int st[maxn],ed[maxn],t;
void dfs1(int x){
st[x] = ++t;
vis[x] = 1;
for(int i=head[x]; i; i=nxt[i]){
int y=ver[i];
if(vis[y])continue;
dfs1(y);
}
ed[x] = ++t;
}
int main(){
return 0;
}
- 樹的深度,重心
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 1e6+5;
int nxt[maxn],head[maxn],ver[maxn],tot;
void add(int x,int y){
ver[++tot]=y, nxt[tot]=head[x], head[x]=tot;
}
int d[maxn],vis[maxn];
int n;
// 樹的深度
void dfs(int x){
vis[x]=1;
for(int i=head[x]; i; i=nxt[i]){
int y=ver[i];
if(vis[y])continue;
d[y]=d[x]+1;
dfs(y);
}
}
// 樹的重心 找到任意一個點,去掉這個點生成的所有子樹中找到最大的子樹M,
// 在所有點中找到一個點最小化子樹M的大小
int size[maxn];// 子樹的大小
int ans=maxn,pos; //
void dfs1(int x){
vis[x]=1; size[x]=1; // 子樹x的大小
int max_part = 0; // 刪除x這個點後分成的最大子樹的大小
for(int i=head[x]; i; i=nxt[i]){
int y = ver[i];
if(vis[y])continue;
dfs1(y);
size[x] += size[y]; // 從子節點向父節點遞推
max_part = max(max_part, size[y]);
}
max_part = max(max_part, n-size[x]); // n為整棵樹節點的數目
if(max_part < ans){
ans = max_part; // 全域性變數記錄重心對應的max_part值
pos = x; // 全域性變數記錄重心
}
}
int main(){
return 0;
}
相關文章
- 樹的重心
- 【圖論】樹的重心圖論
- 樹的DFS序
- DFS樹
- Day4 樹的直徑、重心以及基環樹
- 求樹的直徑(BFS/DFS)
- 獲取時間戳,幾個時間點的時間戳時間戳
- bzoj3439: Kpm的MC密碼(主席樹+DFS序+字典樹)密碼
- 兩個時間戳的時間差時間戳
- DFS在二叉樹上的表現二叉樹
- 【時間戳轉普通時間格式的方法】時間戳
- 二叉樹的深度二叉樹
- MySQL時間戳、時間MySql時間戳
- js獲取某時間的當天0點時間戳 與某時間的當週週一0點時間戳JS時間戳
- 時間戳與時間字串的多時區轉換時間戳字串
- 二叉樹的深度、寬度遍歷及平衡樹二叉樹
- JavaScript 時間戳JavaScript時間戳
- kafka時間戳Kafka時間戳
- 二叉樹的最大深度和最小深度二叉樹
- unity+時間戳的應用Unity時間戳
- mysql時間操作(時間差和時間戳和時間字串的互轉)MySql時間戳字串
- (樹_)求最小深度
- 2385. 感染二叉樹需要的總時間二叉樹
- C# 時間戳轉時間C#時間戳
- 時間型別和時間戳型別時間戳
- 二叉樹的最大/最小深度二叉樹
- 二叉樹的最大深度20201231二叉樹
- python時間戳和時間字串的各種轉換Python時間戳字串
- 常見的Javascript獲取時間戳JavaScript時間戳
- 說說你對時間戳的理解時間戳
- 從 dfs 序求 lca 到虛樹到樹分塊 學習筆記筆記
- 二叉樹的子結構、深度以及重建二叉樹二叉樹
- 基於深度學習的時間序列分類[含程式碼]深度學習
- Excel中時間戳轉換時間Excel時間戳
- 時間戳轉化為時間格式時間戳
- MySQL 時間戳的 獲取 & 轉換為特定時間格式MySql時間戳
- leetcode 每日一題 543 二叉樹的直徑 dfs方法LeetCode每日一題二叉樹
- 111. 二叉樹的最小深度(***)二叉樹