题目的意思,如题。很容易明白。
解决的方法就是拓扑排序,就可以很容易的解决了。
每输入一对选手,判断两个选手是否出现过,没有出现过,新建一个头结点,加入到邻接表中,更新结点的入度。
最后判断是否存在一个结点的入度为0,有,则Yes,否则No。
我用的是STL中的list容器来创建的邻接表。
下面的是 AC的代码:
#include
#include
#include
using ...
分类:
编程语言 时间:
2015-07-23 23:43:47
阅读次数:
291
题意:n个点m条边的有向图,每个点有权值,现在从入度为零的点出发到出度为零的点,求路径上的权值之和最大为多少。
思路:点比较多,肯定不能用矩阵存图,要用到邻接表,建图时统计入度为零的点,从该点出发dfs,找出从这一点出发能得到的最大值。...
分类:
其他好文 时间:
2015-07-20 23:39:31
阅读次数:
166
图有两种标准的表示方法,即邻接矩阵和邻接表(通常邻接矩阵用于稠密图,邻接表用于稀疏图)。如下:
对于图的搜索有两种方法:深度优先搜索 & 广度优先搜索。
广度优先搜索(Breadth-first search)
广度优先搜索是将已发现和未发现顶点之间的边界沿其广度方向向外扩展。亦即算法首先会发现和s距离为k的所有点,然后才会发现和s距离为k+1的其他顶点。
伪代码:
...
分类:
编程语言 时间:
2015-07-20 09:18:55
阅读次数:
184
其实是个水题,二分图的最大匹配,二分图为两边为坐标x,y,直接匈牙利算法做,邻接表边数老是写错,第三次了!!!...
分类:
其他好文 时间:
2015-07-19 18:06:59
阅读次数:
107
关于最短路径问题,最近学了四种方法——bellman算法、邻接表法、dijkstra算法和floyd-warshall算法。这当中最简单的为bellman算法,通过定义一个边的结构体,存储边的起点、终点和路径长度,然后通过一个while(1)死循环不断地访问每一条边,更新源点到各点的最短距离,直到没...
分类:
编程语言 时间:
2015-07-19 16:24:09
阅读次数:
194
链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1927
//邻接表+队列
#include
#include
#include
#include
using namespace std;
#define edge_...
分类:
其他好文 时间:
2015-07-19 11:53:45
阅读次数:
117
思想:用path数组存放路径(初始为空),d表示路径长度(初始为-1),查找从顶点u到v的最短路径过程如图所示:
对应算法如下:
void FindPath(AGraph *G,int u,int v,int path[ ],int d)
{
in...
分类:
编程语言 时间:
2015-07-18 14:12:20
阅读次数:
174
思想:图G是不带权的无向连通图,一条边的长度计为1,因此,求带顶点u和顶点v的最短的路径即求顶点u和顶点v的边数最少的顶点序列。利用广度优先遍历算法,从u出发进行广度遍历,类似于从顶点u出发一层一层地向外扩展,当第一次找到顶点v时队列中便包含了从顶点u到顶点v最近的路径,如图所示,再利用队列输出最路径(逆路径),所以设计成非循环队列。
...
分类:
编程语言 时间:
2015-07-18 12:40:05
阅读次数:
358
思想:图G是不带权的无向连通图,一条边的长度为1,因此,求距离顶点v的最远的顶点,即求距离顶点v的边数最多的顶点。利用广度优先遍历算法,从v出发进行广度遍历,类似于从顶点v出发一层层地向外扩展,到达j, …,最后到达的一个顶点k即为距离v最远的顶点。遍历时利用队列逐层暂存各个顶点,最后出队的一个顶点k即为所求。如图所示:
对...
分类:
编程语言 时间:
2015-07-18 11:04:50
阅读次数:
444
相信有过开发经验的朋友都曾碰到过这样一个需求。假设你正在为一个新闻网站开发一个评论功能,读者可以评论原文甚至相互回复。 这个需求并不简单,相互回复会导致无限多的分支,无限多的祖先-后代关系。这是一种典型的递归关系数据。 对于这个问题,以下给出几个解决方案,各位客观可斟酌后选择。一、邻接表:依...
分类:
数据库 时间:
2015-07-17 18:23:56
阅读次数:
172