图论
Mercury_Lc
宁愿笑着哭
展开
-
P3916 图的遍历【反向建边 + DFS】
https://www.luogu.com.cn/problem/P3916题目描述给出NN个点,MM条边的有向图,对于每个点vv,求A(v)A(v)表示从点vv出发,能到达的编号最大的点。输入格式第1 行,2 个整数N,MN,M。接下来MM行,每行2个整数U_i,V_iUi,Vi,表示边(U_i,V_i)(Ui,Vi)。点用1, 2,\cdots,N1,2,⋯,N编号。输出格式N 个整数A(1),A(2),\cdots,A(N)A(1),A(2),⋯,A(N)。输.原创 2020-10-05 16:55:43 · 404 阅读 · 0 评论 -
数据结构实验之图论十:判断给定图是否存在合法拓扑序列(SDUT 2140)
分析:BFS判断是否有环。 #include<bits/stdc++.h>using namespace std;typedef long long ll;int gra[200][200];int vis[100];void bfs(int n){ memset(vis,0,sizeof(vis)); vis[1] = 1; int q[10...原创 2018-12-02 00:03:13 · 148 阅读 · 0 评论 -
数据结构实验之图论九:最小生成树 (SDUT 2144)
#include<bits/stdc++.h>using namespace std;typedef long long ll;struct node{ int s, e; int w;}s[100005];int c[105];bool cmp(struct node a, struct node b){ return a.w < b....原创 2018-12-02 00:00:18 · 374 阅读 · 0 评论 -
数据结构实验之图论七:驴友计划【迪杰斯特拉算法】(SDUT 3363)
分析:可以求简单的任意两点间最短距离的稍微变形,一个板子题。 #include <iostream>#include <bits/stdc++.h>using namespace std;int inf = 0x3fffff;int gra[1005][1005];int mon[1005][1005];int vis[1005];int dist[10...原创 2018-12-01 23:58:52 · 331 阅读 · 0 评论 -
数据结构实验之图论六:村村通公路【Prim算法】(SDUT 3362)
题解:选点,选最小权的边,更新点权。可以手动自行找一遍怎么找到这个最小的生成树,随便选一个点放入我们选的集合中,然后看和这个点相连的点中,与那个点相连的那条边权值是最小的,选择之后,把相连的这个点一起放入集合中,这样的话集合中就多了一点,现在要找和这两个点都相连的点中,那个边的权最小,直到全部的点都在集合中就完成了。#include <iostream>#include <...原创 2018-12-01 23:55:28 · 633 阅读 · 0 评论 -
数据结构实验之图论六:村村通公路 【克鲁斯卡尔算法】
分析:MST,用最好理解的克鲁斯卡尔算法,其中 fin 是寻找这个点的父节点并进行路径压缩,merge 是把这两个点合并在一起,表示现在已经是相连接的了,克鲁斯卡尔算法要求需要先对边权来排序,所以首先用个结构体来存 起点 - 终点 - 权值,然后按权值从大到小排序,依次选取最小边权。#include <iostream>#include <bits/stdc++.h>...原创 2018-12-01 23:49:07 · 524 阅读 · 0 评论 -
数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
分析:有向图里面找最短路径,原理就是每一步都走距离自己最近的路, 一旦发现走一步可以到,那么这个一定是最短的。#include <bits/stdc++.h>using namespace std;struct node{ int step; int data;}l,w;int vis[1002];int gra[1002][1002];int n...原创 2018-12-01 23:41:02 · 308 阅读 · 0 评论 -
数据结构实验之图论四:迷宫探索【dfs 求路径】
分析:起点已知,开个数组来存放路径,注意 vis 数组要初始化!另外,不能忘记了题目还要求回去的路径,只要在 dfs 之后加上就可以了。#include <bits/stdc++.h>using namespace std;int path[1000 * 2 + 10];int vis[1005];int gra[1002][1002];int num = 0;vo...原创 2018-12-01 23:38:12 · 233 阅读 · 0 评论 -
数据结构实验之图论十一:AOE网上的关键路径【Bellman_Ford算法】
Problem Description 一个无环的有向图称为无环图(Directed Acyclic Graph),简称DAG图。 AOE(Activity On Edge)网:顾名思义,用边表示活动的网,当然它也是DAG。与AOV不同,活动都表示在了边上,如下图所示: 如上所示,共有11项活动(...原创 2018-12-02 18:20:38 · 328 阅读 · 0 评论 -
数据结构实验之图论三:判断可达性(SDUT 2138)(简单DFS)
#include <bits/stdc++.h>using namespace std;int gra[1002][1005];int vis[1002];int n,m;void dfs(int x){ vis[x] = 1; for(int i = 1; i <= n ; i ++) { if(gra[x][i] == 1...原创 2018-11-16 16:42:47 · 389 阅读 · 0 评论 -
数据结构实验之图论二:图的深度遍历(SDUT 2107)(简单DFS)
题解:图的深度遍历就是顺着一个最初的结点开始,把与它相邻的结点都找到,也就是一直往下搜索直到尽头,然后在顺次找其他的结点。#include <bits/stdc++.h>using namespace std;int gra[200][200]; //储存图的大小int vis[200]; // 标记数组void dfs(int x,int k) // 有k个点,...原创 2018-11-15 16:42:38 · 478 阅读 · 0 评论 -
数据结构实验之图论八:欧拉回路(SDUT 3364)
Problem Description在哥尼斯堡的一个公园里,有七座桥将普雷格尔河中两个岛及岛与河岸连接起来。能否走过这样的七座桥,并且每桥只走一次?瑞士数学家欧拉最终解决了这个问题并由此创立了拓扑学。欧拉通过对七桥问题的研究,不仅圆满地回答了哥尼斯堡七桥问题,并证明了更为广泛的有关一笔画的三条结论,人们通常称之为欧拉定理。对于一个连通图,通常把从某结点出发一笔画成所经过的路线叫做欧拉路。人...原创 2018-08-07 14:49:24 · 300 阅读 · 0 评论 -
数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历 (SDUT 2141)
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <queue>using namespace std;typedef long long ll;const int inf = 0x3fffff;int g...原创 2018-11-02 17:08:06 · 441 阅读 · 2 评论