ACM - 第6章 数据结构基础(2)

6.4.2 走迷宫

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

c
int 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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/545363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot工程的热部署

springboot工程的热部署&#xff08;1&#xff09;第一步配置pom.xml&#xff08;2&#xff09;第二步更改IDEA设置什么是热部署配置呢&#xff1f; 我们在开发中反复修改类、页面等资源&#xff0c;每次修改后都是需要重新启动才生效&#xff0c;这样每次启动都很麻烦&#xf…

java 简单的加法 递归 从A加到B

public class Main {// 设置保存和的变量static int sum 0;public static void main(String[] args) {int begin 1, end 10;// 调用方法一 sum 0;sum add(begin, end);System.out.println(">>> 从 " begin " 开始加到 " end " 的结…

Java LocalDateTime类| 带示例的compareTo()方法

LocalDateTime类compareTo()方法 (LocalDateTime Class compareTo() method) compareTo() method is available in java.time package. compareTo()方法在java.time包中可用。 compareTo() method is used to compare this date-time object to the given date-time object. co…

附录:更多集合操作命令

移除并返回集合中的一个随机元素 语法:spop key [count] 示例: 127.0.0.1:6379> smembers myset 1) "v1" 2) "v2" 127.0.0.1:6379> spop myset 1 1) "v2" 127.0.0.1:6379> smembers myset 1) "v1"随机返回集合中指定数量…

第一二章(PTA复习)

第一二章因为3默认是整形&#xff0c;整形长度大于short型&#xff0c;如果让short型 short型 int型&#xff0c;可能会溢出&#xff0c;所以编译报错 例如&#xff1a; 答案&#xff1a;D switch 语句中的变量类型可以是&#xff1a; byte、short、int 或者 char。从 Java …

附录:更多列表操作命令

在某值之前/之后添加某个元素 语法&#xff1a;linsert key before|after pivot value 示例&#xff1a; 127.0.0.1:6379> linsert list3 before b A (integer) 4 127.0.0.1:6379> lrange list3 0 -1 "a" "A" "b" "c"根据下标…

code craft_Craft.io调度中使用的重要术语

code craft1) Arrival Time (AT) 1)到达时间(AT) The time when the process arrives into the running state is called as the Arrival time of the process. In simple words, the time at which any process enter the CPU is known as the arrival time. 流程到达运行状态…

英语笔记:写作:Free admissionsto museums

Free admissionsto museums 免费开放博物馆 Recently, more and more museums areopen to the public free of charge so that they can attract more visitors. However,it has also brought some unexpected problems. Should we carry on the practice? People’sviews va…

ExtJS和AngularJS比较

原文地址&#xff1a;http://www.techferry.com/articles/ExtJS-vs-AngularJS.html ExtJS和AngularJS比较.pdf转载于:https://www.cnblogs.com/animal/p/4267109.html

异常类型及处理

异常类型及处理检查型异常与非检查型异常&#xff1a; 非检查型异常是指机器运行之前永远都不能自动检测出来的异常&#xff0c;例如idea不会报红的但有可能发生异常的代码。error类和RunTime类及其子类 异常类型及处理 finally使用

c ++查找字符串_C ++朋友功能| 查找输出程序| 套装2

c 查找字符串Program 1: 程序1&#xff1a; #include <iostream>using namespace std;class Sample1 {int A, B;friend class Sample2;};class Sample2 {int X, Y;public:Sample2(){X 5;Y 5;}void fun(){Sample1 S;S.A 10 * X;S.B 20 * Y;cout << S.A <<…

英语笔记:词组句子:0806

Aim at doing Aim to 动词原形 Vary from … to … 因……而已 Range from … to … 在……范围内波动、变化 In prospect 即将可能发生的 In place 在正确位置&#xff1b;准备妥当 In favor of 支持&#xff0c;赞同 People in control 学校的主管人员 Keep in to…

附录:更多有序集合操作命令

查询有序集合的总个数 语法:zcard key 示例: 127.0.0.1:6379> zcard zset1 (integer) 4查询 score 区间内的元素个数 语法:zcount key min max 示例: 127.0.0.1:6379> zcount zset1 0 10 (integer) 4累加元素的 score 值 语法:zincrby key increment member 示…

侧边菜单栏 android-menudrawer

这是github上的一款开源项目&#xff0c;类似于人人网可滑动的侧边菜单栏-----android-menudrawer。使用方法也很简单。1.将下载的包解压放入你的工作目录下2.利用Eclipse通过new-->project...->Android Project from Existing Code&#xff0c;找到项目目录&#xff0c;…

软件工程质量管理体系要求_软件质量管理| 软件工程

软件工程质量管理体系要求软件质量管理体系 (Software quality management system) A quality management system frequently mentioned as a standard system is a principal scheme used by organizations to ensure that the products they develop have the desired qualit…

英语笔记:写作:Recreational activities

Recreational activities 娱乐活动 Nowadays, in an era of information and technology, abundant recreational activities areavailable for people to release their stain and stress, ranging from sports tosurfing the internet. There is a hot debate going on argu…

Redis 如何实现限流功能?

“限流”这种事在生活中很常见,比如逢年过节时景点的限流,还有工作日的车辆单双号限流等,有人可能会问为什么要限流?我既然买了车子你还不让我上路开?还有我倒景点买了门票,景点不是能赚更多的钱吗?为什么要限流呢? 其实限流的主要目的就是为了保证整个系统的正常运行…

第三四五章(PTA复习)

第三四五章类的构造与继承异常线程类的构造与继承 加 final 唯一可以说明的是该类不可被继承&#xff0c;另外和其它类是一样的 abstract类是抽象类&#xff0c;必须要被继承才能实现&#xff0c;而final修饰的类不能被继承 异常 由于未捕获到异常&#xff0c;所以执行完final…

switch(封装)

#迭代器class switch(object):def __init__(self,value):self.valuevalueself.fallFalse#迭代器方法def __iter__(self):yield self.matchraise StopIterationdef match(self,*args):if self.fall or not args:return Trueelif self.value in args:self.fallTruereturn Trueels…

stl max函数_C ++ STL中带有示例的array :: max_size()函数

stl max函数C STL array :: max_size()函数 (C STL array::max_size() function) max_size() function is a library function of array and it is used to get maximum size of an array. It returns the total number of elements that an array can hold. max_size()函数是…