310 likes | 484 Views
图论. 图的基本概念. 无向图 边 路径 顶点的度 有向图 弧 入度 出度 环 图的存储结构 邻接矩阵 邻接表 完全图 二分图. 图的遍历. 深度优先遍历 广度优先遍历. 例题 cOW contest. FJ 在 n 头牛之间举办一场比赛,每头牛都有自己唯一的能力值,当它碰到比自己能力值低的牛时就能赢。现在知道了 m 场 1 对 1 的比赛结果,问你能确定多少头牛在这 n 头牛中的能力值排名?. 例题 Crime. 给一个无向图(可能有重边),选择一些点,使得所有边恰好有一个端点被选择,要求所选点尽量少,可能无解.
E N D
图的基本概念 • 无向图 • 边 路径 顶点的度 • 有向图 • 弧 入度 出度 环 • 图的存储结构 • 邻接矩阵 邻接表 • 完全图 二分图
图的遍历 • 深度优先遍历 • 广度优先遍历
例题 cOW contest • FJ在n头牛之间举办一场比赛,每头牛都有自己唯一的能力值,当它碰到比自己能力值低的牛时就能赢。现在知道了m场1对1的比赛结果,问你能确定多少头牛在这n头牛中的能力值排名?
例题 Crime • 给一个无向图(可能有重边),选择一些点,使得所有边恰好有一个端点被选择,要求所选点尽量少,可能无解. • N <= 1000, M <= 10000
例题 • 幼儿园有n个小朋友。不幸的是小孩常常打架。每个小孩有不超过3个仇敌。是否有可能将所有小孩分成两组使得每个小孩最多和他的一个仇敌同组?
拓扑排序 • 有向无环图 • 拓扑序 • 拓扑排序算法 • 如何判断一个有向图是否有环?
例题 Sorting it all out • 给定若干个大小关系, 例如 A< B, B < C. • 求是否可以将所有的数排序满足所有所有大小关系. • 或者输出无解 或 解不唯一. • A<B A<C B<C C<D B<D A<B ABCD • A<B B<A 无解 • A<B A<C 解不唯一
欧拉路径,欧拉回路 • 欧拉路径 • 欧拉回路 • 有向图(无向图)存在欧拉路径(回路)充要条件 • 算法
例题 • 幼儿园里有很多房屋 • 房屋与房屋之间连以走廊 • 走廊与房屋之间有一扇门 • 幼儿园长想把门漆成绿色或者黄色,使得 • 任意一条走廊两头门的颜色不同 • 任意一间房屋上的门,绿色门的数量与黄色门的数量相差不超过1
例题 Catenyms • 给定N个单词, 要求将这些单词排成一行, 使得前一个单词的最后一个字母等于后一个单词的第一个字母. • 例如: aloha.arachnid.dog.gopher.rat.tiger
最小生成树 • 最小生成树 • Prim算法 • Kruskal算法(并查集)
例题 Arctic Network • 平面上有N个点 N <= 500 • 我们可以在其中的K个点上安装卫星 K <= N • 两个卫星之间的可以互相通信 • 其他的点之间只有距离 <= D 才能互相通信 • 求最小的D使得任意两个点之间可以通信(A – B, B – C可以通信, 那么A – C可以间接通信)
例题 HEAVY TRANSPORATION • Hugo Heavy要从城市1到城市N运送货物,有M条道路,每条道路都有它的最大载重量,问从城市1到城市N运送最多的重量是多少。
最短路 • Floyed算法 • Dijkstra算法(堆优化) • SPFA • Bellman_Ford(差分约束系统)
例题 选数 • 已知n(n<=50000)个区间,第i个区间为[ai,bi], 要求你选一些数满足对于第i个区间,至少有ci个数被选中,问至少要选多少个数?
例题 Geodetic集合 • 给定一个简单无向图,我们定义所有包含在(u,v)最短路径上的顶点为Geodetic顶点,这个顶点集合为I(u,v)。 • 例如:1-2, 1-3, 2-3, 2-4, 4-5, 3-5 • I(2,5) = (2, 3, 4, 5) • 给定若干对(u,v),求I(u,v)。
例题 Gambling • 给你一个初始的数x,你可以对它进行以下四个操作: • The fire :如果x ≥ 11,那么你可以付x1的代价使得x→ x -11. • The dragon:如果x mod 3 = 0,你可以支付x / 3的代价使得x→ x * 2/ 3. • The eagle:你可以付x2的代价使得x→x + 7. • The courage:你可以付x + 1的代价使得x→2x + 1. • 任何时候当前操作的数都不能大于x,问要得到0需要的最少代价. • 1 <= x <= 200000
例题 invitation CARDS • 在有向加权图中G(V,E),邮局要从起点S向其他n个节点发送邮件,于是派出n个邮递员,分别到达其他n个地点发送,然后回到起点S,求出所有邮递员所经过的总路程的最小值。 • N, M <= 1000000
例题 Roadlocks • Bessie在农场里过上了安逸的日子。她现在每天都去找她的一个好朋友去扯一下POJ上面的题怎么做,Pascal和C到底更好用等问题。可是她不愿意走最短路,因为她想欣赏沿途的风景什么的。现在给出农场数N和道路数R,在后面的R行中给出起点和重点以及道路长度。请帮助Bessie算出来次短路的长度。所谓次短路,就是指严格比最短路(可能不止一条)短,但是不长于其他任何路径的路径。数据中一定存在至少一条次短路。
Noip07 树网的核 • 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边带有正整数的权,我们称T为树网(treenetwork),其中V, E分别表示结点与边的集合,W表示各边长度的集合,并设T有n个结点。 路径:树网中任何两结点a,b都存在唯一的一条简单路径,用d(a,b)表示以a,b为端点的路径的长度,它是该路径上各边长度之和。我们称d(a,b)为a,b两结点间的距离。 一点v到一条路径P的距离为该点与P上的最近的结点的距离: d(v,P)=min{d(v,u),u为路径P上的结点}。 树网的直径:树网中最长的路径称为树网的直径。对于给定的树网T,直径不一定是唯一的,但可以证明:各直径的中点(不一定恰好是某个结点,可能在某条边的内部)是唯一的,我们称该点为树网的中心。 偏心距ECC(F):树网T中距路径F最远的结点到路径F的距离, 即
ECC(F)=max{d(v,F),v∈V}. 任务:对于给定的树网T=(V, E,W)和非负整数s,求一个路径F,它是某直径上的一段路径(该路径两端均为树网中的结点),其长度不超过s(可以等于s),使偏心距ECC(F)最 小。我们称这个路径为树网T=(V,E,W)的核(Core)。必要时,F可以退化为某个结点。一般来说,在上述定义下,核不一定只有一个,但最小偏心距 是唯一的。 下面的图给出了树网的一个实例。图中,A-B与A-C是两条直径,长度均为20。点W是树网的中心,EF边的长度为5。如果指定s=11,则树网的核为路 径DEFG(也可以取为路径DEF),偏心距为8。如果指定s=0(或s=1、s=2),则树网的核为结点F,偏心距为12。 • N <= 300, s <= 1000
强连通分量 • 有向图的极大强连通分量 • 无向连通图的桥,割点 • 什么是桥? 什么是割点? • Q: 两个割点之间的边一定是桥么?
例题奖金 • A公司决定以每个员工本年在公司的贡献为标准来计算他们得到奖金的多少。于是Mr.A下令召开m方会谈。每位参加会谈的代表提出了自己的意见:“我认为员工a的奖金应该比b高!”Mr.A决定要找出一种奖金方案,满足各位代表的意见,且同时使得总奖金数最少。每位员工奖金最少为100元。
例题 受欢迎的牛 • 每一头牛的愿望就是变成一头最受欢迎的牛。现在有N(N<=10000)头牛,给你M(M<=50000)对整数(A,B),表示牛A认为牛B受欢迎。这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎。你的任务是求出有多少头牛被所有的牛认为是受欢迎的。
例题 Going from u to v or from v to u? • 为了让他们的儿子勇敢一点,佳佳和wind带着儿子们来到了一个大洞穴里。洞穴有n个房间和一些单向的走廊连接着一些房间。每一次,wind会选择两个房间x和y,让他们的一个小儿子也从其中一个到另一个去。儿子可以从x到y,或从y到x。wind想保证她给出的任务都是可行的。但令她苦恼的是,她无法判断一项任务是否可行的。为了不让她苦恼,佳佳决定选择一个任意两个房间都相通的洞穴。现给出一个洞穴,你能否帮佳佳判断这个洞穴中的任意两个房间都相通? • N <= 1000, M <= 6000
二分图 • 二分图的判定 • 二分图的最大匹配(匈牙利算法) • 二分图的最小顶点覆盖
例题 cHESSboard • 给定一个M * N的棋盘, 有一些格子是坏的,不能放东西. • 问能不能将剩下的格子用 1 * 2的积木铺满. • M, N <= 32
例题 Asteroids • 一个矩阵,某些位置有小行星,有一种炸弹,一次可以炸掉一行或者一列,现在问题是需要最少用多少这样的炸弹。 • N <= 500 • K <= 10000
例题 Air Raids • 在一个城镇,有n条路和m个路口。这些路都是单向的,而且路不会形成环,现在要弄一些伞兵去巡查这个城镇,伞兵只能沿着路的方向走,问最少需要多少伞兵才能把所有的路口搜一遍。(求有向无环图的最小覆盖数)