题目链接:
POJ1523
题意:
问一个连通的网络中有多少个关节点,这些关节点分别能把网络分成几部分
题解:
Tarjan 算法模板题
顺序遍历整个图,可以得到一棵生成树:
树边:可理解为在DFS过程中访问未访问节点时所经过的边,也称为父子边
回边:可理解为在DFS过程中遇到已访问节点时所经过的边,也...
                            
                            
                                分类:
编程语言   时间:
2015-06-30 13:04:22   
                                阅读次数:
286
                             
                         
                    
                        
                            
                            
                                Partition为分割算法,用于将一个序列a[n]分为三部分:a[n]中大于某一元素x的部分,等于x的部分和小于x的部分。Partition程序如下:long Partition (long a[], long p1, long p2){//对a[p1]~a[p2]进行分割,返回分割点的序号, p...
                            
                            
                                分类:
其他好文   时间:
2015-06-18 18:57:46   
                                阅读次数:
94
                             
                         
                    
                        
                            
                            
                                Destroying the bus stations
Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2319    Accepted Submission(s): 743
Problem Description
Gab...
                            
                            
                                分类:
其他好文   时间:
2015-06-17 16:42:30   
                                阅读次数:
152
                             
                         
                    
                        
                            
                            
                                Tarjan求BCC/割点 然而似乎我一开始抄的白书的板子哪里抄错了?还是本身哪里不对……(可能是不适用于这道题?因为这题要求求出每个BCC的大小。。? 膜拜了ydc的写法= = 其实两次dfs也并没有比lrj的麻烦到哪里去……感觉反而更清晰易懂,不容易出bug 大家都是NOIP之前就会求割...
                            
                            
                                分类:
其他好文   时间:
2015-06-12 20:51:22   
                                阅读次数:
213
                             
                         
                    
                        
                            
                            
                                //点双连通分量的求解//就是通过tarjan算法求出关节点时,与关节点的子树就是一个连通分量,可以通过画图得到//所以可以将与顶点u有关的边放到栈中,然后一但满足low[v]>=dfn[u](表面点u是割点)(注释:由于dfs,已经建好了u//的子树,所以栈中有顶点u的子树),就可以进行退栈,直到...
                            
                            
                                分类:
其他好文   时间:
2015-06-04 15:27:39   
                                阅读次数:
115
                             
                         
                    
                        
                            
                            
                                任意两个切割点之间无法再分割 
所以如果设dp[i][j] 表示从i位置切到j位置其实没有多大意义,亲测这样会TLE 
dp[i][j]表示切割第i个切割点开始的位置到第j个切割点的位置结束的木棍的最小花费 
时间复杂度O(n3)O(n^3)/*************************************************************************
    >...
                            
                            
                                分类:
其他好文   时间:
2015-05-22 09:50:43   
                                阅读次数:
149
                             
                         
                    
                        
                            
                            
                                TWO NODES
Time Limit: 24000/12000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 1367    Accepted Submission(s): 410
Problem Description
Suppose that G ...
                            
                            
                                分类:
移动开发   时间:
2015-05-20 22:31:29   
                                阅读次数:
210
                             
                         
                    
                        
                            
                            
                                #67. 新年的毒瘤Time Limit: 20 SecMemory Limit: 256 MB题目连接http://uoj.ac/problem/67Description辞旧迎新之际,喜羊羊正在打理羊村的绿化带,然后他发现了一棵长着毒瘤的树。这个长着毒瘤的树可以用 n 个结点 m 条无向边的无向...
                            
                            
                                分类:
其他好文   时间:
2015-05-19 22:19:57   
                                阅读次数:
129
                             
                         
                    
                        
                            
                            
                                using namespace std;
const int MAXE = 300010;
const int MAXP = 1010;
struct N
{
    int v,next;
}edge[MAXE*2];
int head[MAXP];
int Top;
int high[MAXP];
int low[MAXP];
int subnet[MAXP];
int dfsClock;...
                            
                            
                                分类:
其他好文   时间:
2015-05-15 15:33:42   
                                阅读次数:
136
                             
                         
                    
                        
                            
                            
                                git是一种分布式代码管理工具,git通过树的形式记录文件的更改历史,比如: 
base’<–base<–A<–A’ 
                 ^ 
                 | — B<–B’ 
小米工程师常常需要寻找两个分支最近的分割点,即base.假设git 树是多叉树,请实现一个算法,计算git树上任意两点的最近分割点。 
(假设git树节点数为n,用邻接矩阵的形式表示gi...
                            
                            
                                分类:
移动开发   时间:
2015-05-07 08:49:55   
                                阅读次数:
248