摘要:
正反两次遍历最小生成树,把结果顶点的连通性结果分别放在hash[][],hash2[][]里,在比较若相同,则树唯一,反之不唯一View Code 阅读全文
posted @ 2011-02-16 22:33 huhuuu 阅读(565) 评论(0) 推荐(0)
|
|||
|
摘要:
正反两次遍历最小生成树,把结果顶点的连通性结果分别放在hash[][],hash2[][]里,在比较若相同,则树唯一,反之不唯一View Code 阅读全文
posted @ 2011-02-16 22:33 huhuuu 阅读(565) 评论(0) 推荐(0)
摘要:
用枚举算法做,思想还是比较简单的:(比较朴素的思想,没优化过)1、一共找n-1条边形成最小生成树{2、枚举i寻找第i条边是遍历过的点3、枚举j寻找第j条没被遍历过的点在枚举符合条件【i,j】的同时找出最短的边}//一共枚举了n-1,然后最小生成树就诞生了……时间复杂度是(顶点^3)PRIM思想:FOR()一点为起点,与所有点连线,距离保存在dis[]里,起点标记for(i->(n-1)) 一共连n-1条边{ FOR()//找dis[]最短的边 保存距离,标记 FOR()//更新没被标记的最短边,注意与最短路不同,dis[i]是保存到i的最短边,而最短路中 阅读全文
posted @ 2011-02-16 21:19 huhuuu 阅读(1663) 评论(0) 推荐(0)
摘要:
差不多最短路的题目做的差不多了主要三种算法:1、FLOYD:个人比较喜欢使用,不但可以快速计算计算多源最短路,也可以判断图的连通性。时间复杂度是(顶点^3)2、DIJK:从点的角度计算单源最短路比较方便吧,可以用邻接表优化(没用过,呵呵)。时间复杂度(顶点^2(朴素),顶点*log(顶点))3、SPFA+静态邻接表+队列储存:是从边的角度计算单源最短路,比较牛逼的算法,因为时间复杂度比较小(边*k),其中K是常数,注意用前两种算法时,因为这两种算法是从顶点思考,所以要小心重边的情况(有时题目没说明但自己要小心),每次读取边取小即可,用SPFA就没关系了网上说K~2,不过实际使用时K估计接近10 阅读全文
posted @ 2011-02-16 18:12 huhuuu 阅读(2464) 评论(2) 推荐(1)
摘要:
思路:可能从题意去解决问题比较棘手,换个角度,实际就是各个(顶点到根节点的最短路*该顶点的权值)的和,类似usaco2.4.4此题注意点:1、用int型会超范围,(50000*2^16)>(1<31)2、用SPFA算法是要注意无向图边的数量是题目所说边的两倍,因为这个看似简单的地方,RE了n久3、还有就是判断No Answer是只在节点到起点(也就是根节点)没有路时才成立,注意max==0时结果是0,不是No Answer!!!View Code 阅读全文
posted @ 2011-02-16 16:34 huhuuu 阅读(419) 评论(0) 推荐(0)
摘要:
一般单源起点最短路顶点较多时我们会想到dijk来做,但是单源终点最短路时,要在枚举顶点,显然会超时这时,我们可以用矩阵转置思想,把出度,入度的路径倒过来,就又求了一次单源起点最短路……dijk做的View Code现在又用SPFA 0msView Code 阅读全文
posted @ 2011-02-16 10:18 huhuuu 阅读(375) 评论(0) 推荐(0) |
|||