- 博客(7)
- 收藏
- 关注
原创 HDU3342 Legal or Not 拓扑排序判环
题目大意:给出n个人之间的m对师徒关系,让判断是否合法;其中:AB不合法当且仅当A是B的师傅且B是A的师傅。说白了就是拓扑排序判环问题,对于给出的n个人作为图G的n个顶点,他们之间的关系看做是有向边,对于有向图G来说,如果拓扑序列存在,那么就说明这n个人之间的师徒关系合法,否则不合法。代码如下:用了vector和queue类#include #include #include #
2015-02-22 19:09:31 586
原创 HDU2094 产生冠军 拓扑排序
题目大意:输入一些选手之间的比赛结果,问你是否能确定出冠军。很明显,冠军只有一个,我们可以对于每一组输入结果,把它存入一个图的邻接矩阵中,然后遍历入度为0的顶点即可,如果入度为0的顶点只有一个,那么很显然,该顶点对应的选手就是冠军,如果入度为0的顶点有多个,那么就表明这些人直接没有 比出胜负,冠军就无法产生。本题的难点就在于输入字符串与数字编码之间的对应,这点就STL中的map很容易就可以
2015-02-13 08:52:47 1277
原创 HUD1285 确定比赛名次 拓扑排序
题目大意:输入每两人间的先后关系,让你确定出一个序号最小的排名。注意这里不属于无前驱顶点优先的拓扑排序,这点由样例就可以看出,如果是按无前驱顶点优先的话,那么对于 1 2,2 3,4 3这样的输入,结果应该是 1 4 2 3 的,按最小序号输出才是1 2 4 3。我们可以考虑用邻接矩阵来存储图,这样直接按自然序遍历就行了。代码如下:#include #include using
2015-02-10 09:24:19 576
原创 图的拓扑排序
首先我们应该明白,图的拓扑排序是对有向无环图来说的的,无向图和有环的有向图没有拓扑排序,或者说不存在拓扑排序。对于一个有向无环图G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若图G存在边,则u在线性序列中出现在v之前。对有向图进行拓扑排序产生的线性序列称为满足拓扑次序的序列,简称拓扑序列。一个有向无环图通常可以表示某种动作序列或方案,而有向无环图的拓扑排序通常表示某
2015-02-07 16:59:58 1061
原创 POJ2653 Pick-up sticks 线段相交
题目大意:有n个木棒(可视为线段),随机扔到平面坐标系中,问你有哪些木棒上面没有压其他的木棒。典型的求线段相交的问题,把输入的木棒视为线段,分别看该木棒后面的木棒中有没有和他相交的。还有就是本题的时间卡的比较少,O(n^2)的复杂度都有可能爆。刚开始我是按正序判断的,即找出当前木棒前面的木棒中有没有和他相交的,这样一来就做了很多的无用功,比如第一根木棒和第二根木棒相交了,我们已经标记了第一根木
2015-02-04 17:53:28 520
原创 POJ1269 Intersecting Lines 计算几何
几何题。题目大意:给你4个点,问你其确定的两条直线间的位置关系:平行,相交或是重合,如果相交,求出交点坐标。因为数据只有上述三种情况,故我们可以先确定这两天直线是否平行或重合,如果不是,直接求出他们交点的坐标即可代码如下:#include #include using namespace std;typedef struct node{ double x,y;}p
2015-02-02 20:30:18 475
原创 计算几何之线段性质(二):求线段交点
求线段的交点即求线段交点的坐标。若已确定两线段相交,可以通过解析几何中的直线方程来求解交点,这里介绍另外的一种方法。叉积multi(p1,p2,p0)可以看做是由点P1,P2,P0和P1+P2,这四个点围成的平行四边形的面积(如下图所示),及三角形P0P1P2的面积S=1/2 multi(P1,P2,P0)在下图中,线段AB和CD相交于点P。我们分别从D点和
2015-02-02 09:36:20 2187 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人