图论
文章平均质量分 73
SeeYouAlways
practice make perfect
展开
-
Hdu 4460 Friend Chains 最短路spfa
求两点间最短路的最大值,首先会想到floyd,但是o(n^3)会超时,所以采用spfa,o(n^2)..spfa算法步骤:(队列的应用提高了bellman-ford的效率)1,建一个队列,用vis数组记录某点是否在队列中,用dis数组记录源点到某点的距离;2,将源点放入队列中,标记3,当队列非空时,从队列中弹出一个元素,以该元素为中心向外扩展,如果边edge(u,v)存在,且dis原创 2013-07-31 17:23:46 · 706 阅读 · 0 评论 -
多校第四场 Hdu 4635 强连通分量
题意:对于一个有向图,最多能加几条边依然使得图不变为强联通,如果原来就是强联通,输出-1,否则,输出最多能增加的边数思路:最优解就是一个完全图删边的过程,删到有且只有一个点入度为0或者初度为0,所能增加的边s=n*(n-1)-(n-1) ,若图里存在强联通分量,那么就必须先缩点,把一个强联通分量看成一个点,重新构图,找到一点符合只有入度为0或者初度为0的“点”,这些点内练成完全图1,把剩下的不原创 2013-08-02 15:31:38 · 680 阅读 · 2 评论 -
Poj 1330 LCA
一棵树,求两点的最近公共祖先思路:把b点的祖先都标记为1,然后从a点开始逐步找a的祖先,当第一次找到a的祖先并且它被标记过,那么这个点就是a b的最近公共祖先代码:#include #include #include #include #include #include #include #include #define lson l,mid,num<<1#defin原创 2013-08-31 10:14:37 · 488 阅读 · 1 评论 -
Poj 1470 Closest Common Ancestors(Tarjin 求LCA)
题意:给出一棵树上根节点与子节点的关系,求两节点的最近公共祖先这题虽然是比较裸的Tarjin,但是我WA到死!。。刚开始我用邻接表存储边的关系和询问关系,一直WA,我以为用邻接表的过程中出了错误,所以注释掉,改用vector来存储,后面OLE!唉~AC之路真艰难,,,后面一个一个的检查,实在找不出,叫龙帮我看了下,后面我发现了一个初始化问题,然后改了一交A!。。马上我就跑到原来用邻接表写的那个原创 2013-09-04 15:12:02 · 454 阅读 · 0 评论 -
Hdu 2063 过山车 最大匹配
题意:每个人选择自己喜欢的同伴去玩过山车,只有一男一女才有机会,问最多有几对能玩思路:求最大匹配数即可代码:#include #include #include #include #include using namespace std;const int M=550;int k,n,m;int g[550][550];int link[550],vis[550]原创 2013-10-06 20:28:27 · 621 阅读 · 0 评论 -
POj 3041 Asteroids 最小点覆盖
题意:一把枪可以干掉任意一行或者任意一列的所有小星星,问最多开几枪思路:把每一行看作一个点,每一列看作另外一个点,行与列连边,求最大匹配(==最小点覆盖)代码:#include #include #include #include #include using namespace std;const int M=550;int link[M];int g[M][M]原创 2013-10-06 20:31:27 · 598 阅读 · 0 评论