乙個支配樹的板子,看你們都用vector沒有o2應該會被卡常數。
所以研究了一下鄰接鍊錶封裝。
支配樹的dom一定要開兩倍,因為建樹的時候也要加邊23333
# define n 50010
# define m 100010
struct edge ;
struct graph
inline
void add_edge ( int u, int v ) ; head [u] = newedge ;
}inline edge*& operator ( const
int u )
} ;namespace pbds
inline
void dfs ( int u ) }}
inline
int findfa ( int x )
inline
void build ( const
int s, const
int n )
dom.add_edge ( sdom [u], u ) ;
register
int x = ( ufs [u] = fa [u] ) ;
for ( edge* it = dom [x] ; it ; it = it -> nxt )
dom [x] = 0 ;
}for ( register
int i = 2, u ; u = id [i], i <= idx ; ++ i )
}} t ;
inline
bool cmp ( const
int& u, const
int& v )
}# undef n
# undef m
模板 鍊錶模板 有序鍊錶模板及測試
鍊錶模板 c 程式設計 資料結構與程式設計方法 16.2作為抽象資料型別的鍊錶 header file linkedlist.h ifndef linkedlist h define linkedlist h template struct nodetype template class linke...
乙個封裝的鍊錶模板類
由於工作中經常用到鍊錶,所以自己封裝了個簡單的鍊錶模板類。以便使用 鍊錶模板 pragma once define null 0 template class ptrlist ptrlist ptrlist p void addnode t t 增加結點 void removenode t t 移除...
二叉樹構建及雙向鍊錶
二 從中序與後序遍歷序列構造二叉樹 三 二叉搜尋樹轉雙向鍊錶 根據一棵樹的前序遍歷與中序遍歷構造二叉樹。注意 你可以假設樹中沒有重複的元素。例如,給出 前序遍歷 preorder 3 9,20 15,7 中序遍歷 inorder 9 3,15 20,7 返回如下的二叉樹 3 9 20 157 def...