6.4.2 走迷宫

利用bfs寻找最短路。通过对u/m得到x,u%m得到y。u = x * m + y
将方向保存在dx[], dy[]中。

cint q[maxn*maxn];
void bfs(int x, int y)
{int front = 0, rear = 0, d, u;u = x*m + y;vis[x][y] = 1; fa[x][y] = u; dist[x][y] = 0;q[rear++] = u;while(front < rear){u = q[front++];x = u/m; y = u %m;for(d = 0; d < 4; d++){int nx = x + dx[d], ny = y + dy[d];if (nx >= 0 && nx < n && ny >= 0 && ny <m && maze[nx][ny] && !vis[nx][ny]){int v= nx * m + ny;q[rear++] = v;vis[nx][ny] = 1;fa[nx][ny] = u;dist[nx][ny] = dist[x][y]+1;last_dir[nx][ny] = d;}}}
}

6.4.3 拓扑排序,DAG(Directed Acyclic Graph)有向无环图

c#include <stdio.h>
#include <string.h>const int maxn = 1000;
const int maxm = 1000;// 用于判断是否存在环
int c[maxn];
int topo[maxn], t;
int n, m;
int G[maxm][maxm];bool dfs(int u)
{c[u] = -1;for(int v= 0; v < n; v++) if(G[u][v]){if(c[v] < 0) return false;else if(!c[v] && !dfs(v)) return false;}c[u] = 1; topo[--t] = u;return true;
}bool toposort()
{t = n;memset(c, 0, sizeof(c));for(int u = 0; u < n; u++) if(!c[u])if(!dfs(u)) return false;return true;
}int main()
{int u, v;while(~scanf("%d %d", &n, &m)){memset(G, 0, sizeof(G));memset(topo, 0, sizeof(topo));for(int i = 0; i < m; i++){scanf("%d %d", &u, &v);G[u][v] = 1;}if(toposort()){for(int i = 0; i < n; i++)printf("%d ", topo[i]);printf("\n");} else {printf("sort error\n");}}return 0;
}

ACM - 第6章 数据结构基础(2)相关推荐

  1. 算法竞赛入门经典(第二版)-刘汝佳-第六章 数据结构基础 习题(12/14)

    文章目录 说明 习题 习6-1 UVA 673 平衡的括号 习6-2 UVA 712 S - 树 习6-3 UVA 536 二叉树重建 习6-4 UVA 439 骑士的移动 习6-5 UVA 1600 ...

  2. 第六章.数据结构与算法基础

    目录 第六章.数据结构与算法基础(重点) 第一节.数组与矩阵 数组 稀疏矩阵 第二节.数据结构的定义 第三节.线性表 链表详解 顺序存储与链式存储对比 队列与栈 第四节.广义表 第五节.树与二叉树 树 ...

  3. c语言逻辑代数常用公式证明,《数据结构C语言版》严蔚敏第二章逻辑代数基础...

    第二章逻辑代数基础,数字电路,1.2.1逻辑代数与基本逻辑关系,在数字电路中,我们要研究的是电路的输入输出之间的逻辑关系,所以数字电路又称逻辑电路,相应的研究工具是逻辑代数(布尔代数).,在逻辑代数中 ...

  4. 萌新向Python数据分析及数据挖掘 第一章 Python基础 第三节 列表简介 第四节 操作列表...

    第一章 Python基础 第三节 列表简介 列表是是处理一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目.列表中的元素包括在方括号([])中,每个元素之间用逗号分割.列表是可变的数据类型, ...

  5. 翻译:程序员数据结构基础:选择正确的数据结构

    本文转载自GameDev.net,仅供学习交流.因为刚刚开始学习翻译,难免有些疏漏,如果有哪些地方翻译的不正确,请不吝告知,万分感谢. 原文链接:http://www.gamedev.net/page ...

  6. 《R的极客理想—工具篇》—— 第2章 时间序列基础包

    本节书摘来自华章出版社<R的极客理想-工具篇>一 书中的第2章,作者:张丹,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第2章 时间序列基础包 本章主要介绍 ...

  7. 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算

    第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说,用numpy的主要目的在于应用矢量化运算.Numpy并没有多么高级的数据分析功能,理解Numpy ...

  8. pandas 第二章 pandas基础

    第二章 pandas基础 import numpy as np import pandas as pd import xlrd 在开始学习前,请保证pandas的版本号不低于如下所示的版本,否则请务必 ...

  9. ZeroMQ 中文指南 第一章 ZeroMQ基础【转载】

    此文章转载自GitHub : https://github.com/anjuke/zguide-cn 作者信息如下. ZMQ 指南 作者: Pieter Hintjens ph@imatix.com, ...

最新文章

  1. C++逗号运算符与逗号表达式
  2. C#验证子网掩码的正确性
  3. 第一周周四DailyReporting——PM(李忠)
  4. 一起学nRF51xx 7 -  spi
  5. jmeter.bat配置(主要关于OOM)
  6. 感觉没睡好就..-shenmedoumeixie....
  7. ByteTrack实时多目标跟踪
  8. Google云服务降价,整合持续集成工具,支持Windows和托管虚拟机
  9. 怎么在matlab中图像中外接矩形,Matlab 最小外接矩形
  10. Mac快捷键和实用技巧
  11. Docker CE for CentOS的安装(对官方文档的翻译)
  12. china-pub春季教材展,给力优惠,买二赠一
  13. MAC使用RZ SZ指令实现本地与远程服务器之间文件上传与下载
  14. TSNE 高维数据可视化
  15. 粒子群在小车机械手臂的应用
  16. 操作系统应用阶层现状,对操作系统的认识
  17. xp隐藏桌面计算机图标不见了怎么办,XP系统桌面IE图标不见了怎么办?IE图标消失了怎么恢复?...
  18. ESD:“蓝灯“精灵如何对抗27KV空气式放电
  19. Space X 火箭载人上天,马斯克改写时代:理科生的浪漫是用钱征服宇宙
  20. Git fatal unable to auto-detect email address

热门文章

  1. java趣味_Java趣味分享:try finally
  2. fscanf不读取_思考了一天,终于把matlab的fscanf中的sizeA搞清楚了
  3. linux中tags文件能删除吗,Git 详细介绍查看、删除、重命名远程分支和tag
  4. mysql增量脚本_mysql全量和增量备份脚本
  5. php获取不重复的随机数字,php如何生成不重复的随机数字
  6. php 国密 签名,关于php国密SM3签名算法
  7. filter 灰度处理:公祭日,一行代码让页面变成黑白色调
  8. python以20字符宽居中输出,Python 字符串内置方法(一)
  9. 三星手机 java_如何在三星手机上安装Java ME应用程序?
  10. Ubuntu 18.04 安装OpenCV C++