图论
文章平均质量分 56
ACLJW
这个作者很懒,什么都没留下…
展开
-
06-图1 列出连通集
06-图1 列出连通集(25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0#include <iostream>using namespace std;const int maxSize=15...原创 2017-11-17 14:30:37 · 547 阅读 · 0 评论 -
10562:Undraw the Trees
Undraw the Trees这题没啥说的,利用DFS进行先序遍历即可,注意 node 可以不是字母,然后 puts() 默认换行的,太久没用都忘了。。#include<bits/stdc++.h>using namespace std;const int maxn = 200 + 5;int T;char G[maxn][maxn];bool isnode(ch...原创 2018-08-06 23:37:25 · 106 阅读 · 0 评论 -
1600:Patrol Robot
Patrol Robot这个题还是DFS,不过每个状态除了记录位置之外,还要记录剩余穿越次数,这样一来就变成了三维DFS。对于值为1的点如果剩余穿越次数大于0且该状态未遍历过的话也可以访问。像这种四个方向的话用常量数组比较方便,没必要搞个二重循环,容易出bug。#include<bits/stdc++.h>using namespace std;const int max...原创 2018-08-10 00:56:31 · 133 阅读 · 0 评论 -
439:Knight Moves
Knight MovesBFS即可,字符串数组 size 定义成了 2 导致输入一直错误,应该是无法存入'\0' 引起的,待会儿再深究。#include<bits/stdc++.h>using namespace std;const int maxn = 8;typedef pair<int,int> P;int d[maxn][maxn];char a...原创 2018-08-09 23:10:24 · 93 阅读 · 0 评论 -
816:Abbott's Revenge
Abbott's Revenge一些细节要特别注意#include<bits/stdc++.h>using namespace std;const int maxn = 10;const char* dirs = "NESW";const char* turns = "FLR";struct Node{ int r,c,dir; Node(int a...原创 2018-07-31 23:39:16 · 167 阅读 · 0 评论 -
10305:Ordering Tasks
Ordering Tasks这题比较简单,就是拓扑排序,而且肯定是有向无环图,直接DFS即可。注意数据读取,只要 n 和 m 有一个不为0即可。。。不考虑是否存在环:#include<bits/stdc++.h>using namespace std;const int maxn = 100 + 10;int m,n,t;int visited[maxn];...原创 2018-08-05 00:29:29 · 173 阅读 · 0 评论 -
572:Oil Deposits
Oil Deposits#include<bits/stdc++.h>using namespace std;const int maxn = 100 + 5;int m,n,cnt;char graph[maxn][maxn];void dfs(int x,int y){ graph[x][y] = '*'; for(int dx = -1;dx <=...原创 2018-06-01 12:58:50 · 121 阅读 · 0 评论 -
1103:Ancient Messages
Ancient Messages数一数就能发现,题目表中的6个符号从左到右依次有1,3,5,4,0,2个洞,各不相同。这样,只需要数一数输入的符号有几个“白洞”,就能准确地知道它是哪个符号了。至于具体实现,我的思路是:先确定一个符号,找到该符号的空洞个数然后将该符号“擦除”,继续确定下一个符号。具体而言,每次找到一个黑点,然后DFS,如果其周围点为黑点则递归,若为白点且为封闭块则个数加1,最后再次...原创 2018-06-02 23:52:41 · 347 阅读 · 0 评论 -
08-图9 关键活动
08-图9 关键活动(30 point(s))假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程...原创 2018-02-02 21:53:09 · 254 阅读 · 1 评论 -
08-图8 How Long Does It Take
7-12 How Long Does It Take(25 分)Given the relations of all the activities of a project, you are supposed to find the earliest completion time of the project.Input Specification:Each input file contain...原创 2017-12-23 11:05:43 · 372 阅读 · 0 评论 -
08-图7 公路村村通
08-图7 公路村村通(30 分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式: 输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。输出格式: ...原创 2017-12-20 12:33:09 · 397 阅读 · 0 评论 -
07-图6 旅游规划
07-图6 旅游规划(25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式: 输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M...原创 2017-12-19 19:05:36 · 365 阅读 · 0 评论 -
07-图5 Saving James Bond - Hard Version
07-图5 Saving James Bond - Hard Version(30 分) This time let us consider the situation in the movie “Live and Let Die” in which James Bond, the world’s most famous spy, was captured by a group of drug ...原创 2017-12-18 09:39:34 · 239 阅读 · 0 评论 -
07-图4 哈利·波特的考试
07-图4 哈利·波特的考试(25 分) 哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。...原创 2017-12-16 18:58:17 · 182 阅读 · 0 评论 -
06-图3 六度空间
06-图3 六度空间(30 分) “六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。图1 六度空间示意图 “六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许...原创 2017-12-16 17:53:51 · 215 阅读 · 0 评论 -
06-图2 Saving James Bond - Easy Version
06-图2 Saving James Bond - Easy Version(25 分) This time let us consider the situation in the movie “Live and Let Die” in which James Bond, the world’s most famous spy, was captured by a group of drug ...原创 2017-12-15 22:11:18 · 113 阅读 · 0 评论 -
11853:Paintball
Paintball这个题可以看作是图上有很多圆形禁区,如果直接考虑是否可以从左边走到右边似乎有些无从下手,其实可以这样考虑,把整个方形区域看作水面,把禁区看作小岛,如果可以从上边沿着这些小岛走到下边的话,就说明方形区域被禁区整个隔断了,那么就不能从左边走到右边,这样一来DFS即可。(思路来自紫书)至于最北的位置,只需要在DFS的时候计算当前禁区与左右边缘的下交点,不断更新坐标值即可。因为我...原创 2018-08-29 00:32:03 · 161 阅读 · 0 评论