![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深度优先搜索
ethannotlazy
这个作者很懒,什么都没留下…
展开
-
7-3 Telefraud Detection (25分)
7-3 Telefraud Detection (25分)Telefraud(电信诈骗) remains a common and persistent problem in our society. In some cases, unsuspecting victims lose their entire life savings. To stop this crime, you are supposed to write a program to detect those suspects from原创 2020-07-21 21:50:40 · 277 阅读 · 1 评论 -
1087 All Roads Lead to Rome (30分)
常规思路,Dijkstra + dfs先用Dijkstra找出totalCost最小的所有路线,用pre数组记录他们的前驱关系。用dfs从得到的路线中找出totalHappiness最大的,或者avgHappiness最大的。注意一些细节,比如输入并没有给出起点城市的happiness。#include<iostream>#include<string>#include<unordered_map>#include<vector>usin.原创 2020-05-18 23:47:48 · 120 阅读 · 0 评论 -
1013 Battle Over Cities (25分)
用dfs数出图的连通分量数。#include<cstdio>#include<algorithm>using namespace std;int cityNum, roadNum, checkNum;bool map[1000][1000];bool visited[1000];int lostCity;void dfs(int cur) { visit...原创 2020-03-03 16:11:09 · 74 阅读 · 0 评论 -
1134 Vertex Cover (25分)
思路:用邻接表来表示图,用unordered_set数组表示边。(只需用一个邻接表就可以表示图的边和点)根据每个序列给出的结点对图进行遍历,遍历完成后判断是否全部边都被访问了。代码:#include<cstdio>#include<unordered_map>#include<unordered_set>#include<algorithm...原创 2020-02-05 16:23:28 · 149 阅读 · 0 评论 -
1131 Subway Map (30分)
分析因为站号从0000-9999,如果直接设置邻接表table[10000][10000]来表示结点之间的连通关系,显然内存超限。考虑以站作为结点,通过设置结构体表示结点。(即通过邻接表表示图)每个站可能和多个站相连,故在结构体内设置一个数组,记录所有邻站编号。关键点利用DFS不难得出所求的路径,关键是怎样表示一些站点属于哪条线路。由题目描述:Each station i...原创 2020-02-04 23:15:52 · 381 阅读 · 0 评论 -
1118 Birds in Forest (25分)
每张图片有若干只鸟。对于两张图片,如果它们有相同编号的鸟,则说明这两张图片来自同一棵树。将各图片视为结点,各图片通过相同编号的鸟联系起来,所以可以用dfs或者bfs来进行遍历。注意,除了设置picVisited来判断某张图片是否访问过,还需要设置birdVisited来判断某只鸟是否已经访问过(否则超时)。BFS:#include<cstdio>#include<unor...原创 2020-02-01 13:41:12 · 124 阅读 · 0 评论 -
1111 Online Map (30分)
可以直接Dijkstra,也可以先用Dijkstra求出所有最短路,再用DFS选出最佳的一条。直接用Dijkstra解决,需要设置额外的数组:#include<cstdio>#include<vector>#include<algorithm>using namespace std;int intersectNum, streetNum;int...原创 2020-01-30 15:20:13 · 157 阅读 · 0 评论 -
1103 Integer Factorization (30分)
#include<cstdio>#include<vector>#include<cmath>using namespace std;int N, K, P;vector<int> res, temp;int factorSum = 0;int ans[401];void dfs(int i, int item, int curSu...原创 2020-01-23 16:07:29 · 112 阅读 · 0 评论 -
1091 Acute Stroke (30分)
就是三维的dfs或者bfsdfs:(超时)#include<cstdio>int rowNum, columnNum, depthNum, threshold;using namespace std;int slice[70][1300][130] = { 0 };int dfs(int depth, int row, int column) { if (slice...原创 2020-01-20 15:57:58 · 122 阅读 · 0 评论 -
1030 Travel Plan (30分)
//dfs#include<cstdio>#include<algorithm>#include<list>using namespace std;bool visited[500];int pre[500]; //从哪个城市来int cityNum, pathNum, start, dest;int inf = 0x7fffffff;int ...原创 2020-01-08 00:23:09 · 79 阅读 · 0 评论 -
1034 Head of a Gang (30分)
输入样例的点权、边权如下:思路为了得到某一个连通分量的总边权,用dfs遍历该连通分量。但是对于连通分量内成环的情况,不能仅仅标记某个结点是否已经访问过,例如对于F、H、G这三个结点,dfs遍历沿F->G->H遍历到结点H时,发现F已经访问过,就不将他们之前的边权10加到总边权中,最终返回的总边权只有50。可以设置一个二维的bool数组标记某条边是否已经访问过,如果没访问...原创 2020-01-09 13:26:36 · 88 阅读 · 0 评论 -
1068 Find More Coins (30分)
#include<cstdio>#include<vector>#include<algorithm>#include<unordered_set>using namespace std;int n, price;int coins[10001];bool visited[102][10002];vector<int>...原创 2020-01-14 19:56:50 · 189 阅读 · 0 评论