![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
宝宝睡醒了
这个作者很懒,什么都没留下…
展开
-
判断连通块的个数
dfs判断连通块个数#include<bits/stdc++.h> const int N=1005;using namespace std;vector<int> mp[N]; int vis[N]={0};void dfs(int k){ for(int i=0;i<mp[k].size();i++) if(vis[mp[k][i]]==0){ vis[mp[k][i]]=1; dfs(mp原创 2021-01-22 17:40:24 · 573 阅读 · 0 评论 -
Gym 102423I
Maze Connect题意是判断最少将多少条边去掉之后,该图变成全部连通,其实就是找有多少个连通块,用dfs跑一下就过了。难点在于把\ /变成2 * 2的方格对应的形状,因为这两个符号带有方向。dfs找连通块的方法就是遍历所有位置,找到不是墙的就dfs进去,将所有不是墙的都标记上,避免下次重复记录,这样就可以保证每一个连通块都有一个空地被记录一次,求出来的再减去1。#include <algorithm>#include <bitset>#include <cm原创 2021-01-22 10:32:11 · 94 阅读 · 1 评论 -
Fire Net
dfs题目大意现在有一个N*N的地图,地图上有一些围墙。你的任务是在没有围墙的空白地方建尽可能多的炮台。假设炮台可以向“上下左右”四个方向发射子弹,子弹可以穿越任何距离并可在途中摧毁一个另一个炮台。而墙壁结构坚固,可以阻止子弹。现在你的目标是尽可能多地在地图中设置炮台,并且保证炮台不会互相摧毁。题目思路对于每一个点遍历,如果可以放置就作一个标记,如果不能放置就继续遍历下一个点。直到所有与点都被遍历。#include<stdio.h>int n,i,j,ans;char s[5]原创 2020-11-14 16:24:15 · 239 阅读 · 0 评论 -
二分图
二分图染色法判断二分图通过染色法可知,黑色和白色交替染色不冲突的话,被染色的环一定不含奇数环。const int N = 100010, M = 200010;int n, m;int h[N], e[M], ne[M], idx;int color[N]; //染色void add(int a, int b){ e[idx] = b, ne[idx] = h[a], h[a] = idx ++;}bool dfs(int u, int c){ color[u] =原创 2020-11-09 21:04:04 · 109 阅读 · 0 评论 -
7-1 列出连通集 (25分)
7-1 列出连通集 (25分)给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。输出格式:按照"{ v1 v2 … vk }"的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。输入样例原创 2020-09-30 20:11:39 · 1150 阅读 · 0 评论 -
7-3 地下迷宫探索 (30分)
7-3 地下迷宫探索 (30分)地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式。地道网是房连房、街连街、村连村的地下工事,如下图所示。我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智。在现在和平发展的年代,对多数人来说,探索地下通道或许只是一种娱乐或者益智的游戏。本实验案例以探索地下通道迷宫作为内容。假设有一个地下通道迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关。请问你如何从某个起点开始在迷宫中点亮所有的灯并回到起点?原创 2020-10-03 01:06:51 · 241 阅读 · 0 评论