图与图遍历
Ziiyan
这个作者很懒,什么都没留下…
展开
-
UVA - 10129 Play on Words
题目大意:给出一些字符串问能不能首尾相连。解题思路:刚开始想每个词的首尾作为一个节点看看能不能把节点串起来,发现十分复杂。还是靠题解……把每个字母当成点,即每个词是线,然后判断有向欧拉通路。 欧拉道路:除了起点和终点外, 其他点的“进出” 次数应该相等。 对于有向图, 则必须其中一个点的出度恰好比入度大 1, 另一个的入度比出度大 1。只有第一个字母和最后一个字母有用。然后记录每个字母的原创 2016-08-13 23:12:07 · 277 阅读 · 0 评论 -
UVA - 10054 The Necklace
题目大意:每个节点有两个颜色,连接时颜色要相同,问能否串成项链。解题思路:判断欧拉回路。 无向连通图G是欧拉图,当且仅当G不含奇数度结点(G的所有结点度数为偶数)。记录一下度数,判断全偶然后输出就行。euler 这个输出的时候要逆序注意一下。#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#incl原创 2016-08-13 23:12:29 · 284 阅读 · 0 评论 -
UVA - 10004 Bicoloring
题目大意:n 个点, l 条边,输入一组数据 a,b 分别是该条边的两个端点。用两个颜色给端点上色,相邻两个端点颜色不能相同,问是否能涂色。解题思路:存下每一条边的信息,若该条边通则标记,因为是无向图,交换两端点后也能通过。对于每一个点,枚举所有点的坐标,查看其和当前点构成的线是否能通,若成立,检查对应点是否涂色:若未着色,涂上与该点相反的颜色;若已着色,检查是否和当前点相同,相同则标记错误。#in原创 2016-08-12 22:43:39 · 270 阅读 · 0 评论 -
UVA - 10557 XYZZY
题目大意:有 n 个房间,接下来 n 行第一个数字是该房间的能量(可增可减),第二个数字是该房间连通其他房间的个数,后面 k 个数是所连通房间编号。初始能量 100,要求过程中能量都要大于 0,问能否到达终点。解题思路: 侵删。uva 10557 - XYZZY 关键词:正环,无敌bfs,单源最短路spfa算法 by lzw_java 侵删。SPFA算法详解没有题解我仿佛是条死鱼……泣#原创 2016-08-12 22:43:09 · 220 阅读 · 0 评论 -
UVA - 439 Knight Moves
题目大意:8×8 棋盘内,问从一个点到另一个点要走几步。移动方式是国际象棋中骑士的移动方式:先上下左右移动一格,然后斜着移动一格,即在一个 2×3 的格子内从一角移动到另一角。解题思路:大概是第一题 bfs,有点懵。把所给的位置信息转化为坐标。每移动一个合法位置就加入队列,走过的位置标记一下,到达目标返回距离就行。感觉没有题解都没法做下去,心累。#include<iostream>#include原创 2016-08-11 20:27:19 · 276 阅读 · 0 评论 -
UVA - 705 Slash Maze
题目大意:给出一个用 / 和 \ 表示的矩阵,求所围成的封闭的环的个数和最大长度。解题思路:一开始就想把 / \ 放大化成题目中的图,然而发现格子是斜的貌似不太好弄,百度题解也是放大然后用 1 和 0 表示,很巧妙。 \ / 10 01 01 10化完写在纸上数环和长度发现自己都走错,斜着走的时候需要判断,并不是所有情况都可以走,接着打了一个上午被特殊判断弄懵逼。然后直接放大原创 2016-08-11 20:26:48 · 166 阅读 · 0 评论 -
UVA - 784 Maze Exploration
题目大意:走迷宫,X 是墙,将 * 能够移动到的范围都用 # 表示然后输出。解题思路:同样的思路,单层 dfs,碰到墙壁 X 返回,# 说明已遍历,返回,其余就剩空格用 # 覆盖。最后记得把初始位置也置为 #。#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include原创 2016-08-10 21:50:34 · 181 阅读 · 0 评论 -
UVA - 657 The die is cast
题目大意:求骰子上的点数并按升序输出。. 为背景,* 为骰子, X 为点数,有公共边相邻点数为 1,即上下左右才算相邻。解题思路:类似上一题油田的,多了一层遍历。查找骰子即 *,然后在骰子上查找点数即 X,双重 dfs。#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#in原创 2016-08-10 21:50:02 · 154 阅读 · 0 评论 -
欧拉图
定义: 通过图(无向图或有向图)中所有边且每边仅通过一次通路称为欧拉通路,相应的回路称为欧拉回路。具有欧拉回路的图称为欧拉图(Euler Graph),具有欧拉通路而无欧拉回路的图称为半欧拉图。定理:无向连通图G是欧拉图,当且仅当G不含奇数度结点(G的所有结点度数为偶数); 连通所有结点度数为偶数无向连通图G含有欧拉通路,当且仅当G有零个或两个奇数度的结点; 连通奇数度的节点有 0原创 2016-08-15 17:17:07 · 719 阅读 · 0 评论 -
UVA - 532 Dungeon Master
题目大意:逃出地牢。L 层 长 R 宽 C,从 S 走到 E 要移动几次(秒),无法逃出输出 Trapped!解题思路:. 可走,# 不能走,化为 0 1,0 可走 1 不可走,走过的位置标记为 1。仿照上一题移动骑士UVA - 439 Knight Moves ,移动方式不一样而已,可以在三维平面上下层移动,坐标移动方式改一下,感觉没太大区别。#include<iostream>#include原创 2016-08-11 20:27:44 · 192 阅读 · 0 评论 -
UVA - 10305 Ordering Tasks
题目大意:n 个任务 m 个要求,以下 m 行是两个数字a b,要求任务 a 排在 b 前面。输出一个符合要求的任务顺序。解题思路:拓扑排序。 侵删。拓扑排序的原理及其实现 by dm_vincentkahn算法:#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#in原创 2016-08-15 22:08:01 · 232 阅读 · 0 评论 -
UVA - 10596 Morning Walk
题目大意:N 个点和 R 条边,问能不能经过每条边且只经过一次,允许有孤立点。解题思路:有向欧拉回路。注意没有边即 R = 0 的时候是不行的,还有自环也不算。dfs 遍历一遍,访问过的点标记。然后判断每个点的度数是否为偶数,若为奇数则不符合;另外,若有一个点没有被访问过,且该点度数不为 0(不是孤立点),那么该图也不符合。#include<iostream>#include<cstdio>#i原创 2016-08-15 22:07:23 · 238 阅读 · 0 评论 -
UVA - 572 Oil Deposits(DFS)
题目大意:找出有多少块 @,八个方向相邻就算相连。解题思路:用一个数组 num 标记该 @ 是否被查找过,若有则返回,八个方向递归查找相邻的 @。统计进入了几次 dfs#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>char map[原创 2016-08-10 21:48:47 · 185 阅读 · 0 评论