![](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 · 280 阅读 · 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 · 123 阅读 · 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 · 78 阅读 · 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 · 382 阅读 · 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或者bfs dfs:(超时) #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 · 123 阅读 · 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 · 190 阅读 · 0 评论