POJ 2942 圆桌骑士 (点双学习笔记)
割点
在无向连通图G上进行如下定义:
• 割点:若删掉某点P后,G分裂为两个或两个以上的子图,则称P为G的割点。
• 割点集合:在无向连通图G中,如果有一个顶点集合,删除这个顶点集合以及与该点集中
的顶点相关联的边以后,原图分成多于一个连通块,则称这个点集为G的割点集合。
• 点连通度:最小割点集合的大小称为无向图G的点连通度
割边
类似地,在无向连通图G上进行如下定义:
• 桥(割边):若删掉某条边B后,G分裂为两个或两个以上的子图,则称B为G的桥(割边)。
• 割边集合:如果有一个边集合,删除这个边集以后,原图分成多于一个连通块,则称这个
边集为割边集合。
• 边连通度:最小割边集合的大小称为无向图G的边连通度。
双连通分量
• 点双连通图:点连通度大于1的图称为点双连通图(没有割点)。
• 边双连通图:边连通度大于1的图称为边双连通图(没有割边)。
• 无向图G的极大(点/边)双连通子图称为(点/边)双连通分量。
• 缩点:把一个双连通分量缩为一个点的过程,就是删除与该双连通分量相关的所有点和边,
然后新建一个点,向所有与双连通分量中的点有边相连的点连边
圆桌骑士
模型: 建补图——没有仇恨的骑士间连边。
几个骑士可以召开圆桌会议的条件是它们构成一个奇环。 问题转化为:求有多少个骑士不包含在任何奇环
• 引理:若某个点双连通分量中存在奇环则该点双联通分量中的所有点都在某个奇环内。
• 用经典Tarjan算法找出所有点双联通分量。
• 判定每个点双联通分量是不是二分图,就可以知道它有没有奇环了