图论
beckyUp
他强任他强,过题我在行
展开
-
codeforces 1242B 0-1 MST 【图论+并查集】
题目分析要求最小生成树,如果考虑有0 边相连的点作为一个集合的话,那么就是求集合的个数那么我们怎么统计 有 0边相邻的点呢?很显然不能再原图上直接暴力跑。因为随着n的增大,补图会非常大。但是我们用并查集维护集合的个数那么我们考虑一个点u ,遍历与u相邻的所有小于u的点,统计u与这个点所在的集合相连的数量比如 1,2,3 是一个集合 6 与1,2,相连,那么1,2,3 这个集合的数量为3...原创 2019-11-07 17:08:34 · 747 阅读 · 0 评论 -
牛客练习赛53 德育分博弈政治课 【网络流】
题目大意给出n个只有六个面的骰子每个面由1~9 中的数字组成每个面的数字不同给出q次询问每次给出一个串,要求用n个骰子摆出串的形状题目分析因为每个骰子只能表示一个面类似一个由限制的问题考虑网络流中的一个点如果它的进入的流量为1 就能限制它在与它相连的点中只选择一个。那么我们考虑建这样一个图每个数字到汇点的权值应该是查询串中这个数字出现的次数然后,只要我们能跑一个满流...原创 2019-10-12 23:14:56 · 305 阅读 · 2 评论 -
codeforces 1093D 【染色求奇环+计数】
昨天晚上跟失了智一样。一直陷在一个死胡同里出不来后来发现了bug改了一处,没有改第二处难受。#include <bits/stdc++.h>#define cl(a) memset(a,0,sizeof(a))#define sc(x) scanf("%d",&x)#define pt(x) printf("%d\n",x)#define rep(i,a,b)...原创 2018-12-16 16:47:37 · 241 阅读 · 0 评论 -
codeforces 1063B. Labyrinth 【01bfs】
题目大意:在一个地图上,有些点不能走,有些点可以走,向左走向右走会有花费,向上和向下没有,现在给定起点,和向左走、向右走的最多步数,问能够走到的点有多少个题目分析:这个题如果直接bfs 去搜的话,没有办法很好的更新到达某个点最少需要多少个向左走,所以我们用bfs跑一个最短路,dist[i][j] 表示达到 (i,j)这个点最少需要向左走的步数,那么向右走的步数就为 j-c0+dist[i][j]...原创 2018-10-19 21:26:34 · 415 阅读 · 0 评论 -
牛客网暑期ACM多校训练营(第一场) D Two Graphs(图的同构)
题目大意:给你两个图 G1 G2,让你在G2中找有多少个子图与G1 同构题目分析 首先这个题目的数据量非常小 n=8 ,所以我们可以采取非常暴力的做法,由于G2中如果有点与G1同构的话,我们发现只要改变G2中 点的序号,此时的新图中如果有一部分与G1完全相同,那么这些点构成的图就会与G1同构。这样我们可以对G2中的点进行全排列,判断G1中存在的边的位置,新的G2中是否也存在同样的边即可 然...原创 2018-07-29 21:40:58 · 194 阅读 · 0 评论 -
codeforce 964D Destruction of a Tree[dfs]
题目大意:给你一棵树,每次只能删除度为2的结点,问你能否将整棵树删除,如果可以的话,就输出路径题目分析,对于一棵树的某一个结点的子树来说,如果他的所有结点的度都是奇数,而该结点的度是偶数的话,那么其一定为一个能够先删除的结点,因为如果不先删除该结点,而先删除该结点的父结点,那么这个结点的度就会变为奇数,就不能被删除了 所以只要用dfs进行递归,找到需要的结点,再用dfs找路径即可#inc...原创 2018-04-25 21:22:22 · 249 阅读 · 0 评论 -
hdu 6026 Deleting Edges 【最短路+计数】
题目大意:给你一个图,要把它删成一棵树,并且使得0这个结点从树上到达任意结点的距离和原图中的最短路径相等分析:我们对于某一个点来说,只需要知道有多少条和到这个点最短路的路径,乘起来就可以 注意个数是一个乘积的形式,应该用一种递推的方式去求;#include <bits/stdc++.h>using namespace std;int g[55][55];const ...原创 2018-04-23 01:55:32 · 179 阅读 · 0 评论 -
HDU - 1217 Arbitrage [最短路]
题目大意,货币之间对兑换,如果起始有 1 美元,1美元=0.5英镑 1英镑=10法郎,1法郎=0.21 美元。经过交换 能够得到 1*0.5*10*0.21=1.05 美元,问给定货币和汇率,能够实现上述操作分析:我们把乘法两边取对数,就变成 lg0.5+lg10+lg0.21>lg 1=0的情况,如果我们给每个参数都取上负数的话,就变成了最短路问是否存在负环#include &...原创 2018-03-12 20:09:23 · 350 阅读 · 0 评论 -
CSP第十二次 行车路线【80分】
问题描述 小明和小芳出去乡村玩,小明负责开车,小芳来导航。 小芳将可能的道路分为大道和小道。大道比较好走,每走1公里小明会增加1的疲劳度。小道不好走,如果连续走小道,小明的疲劳值会快速增加,连续走s公里小明会增加s2的疲劳度。 例如:有5个路口,1号路口到2号路口为小道,2号路口到3号路口为小道,3号路口到4号路口为大道,4号路口到5号路口为小道,相邻路口之间的距离都是2公里。如...原创 2018-03-02 20:01:11 · 462 阅读 · 0 评论 -
2018年牛客网寒假多校赛第四场 E题 通知小弟 【有向图求强连通缩点】
链接:https://www.nowcoder.net/acm/contest/76/E 来源:牛客网题目描述 在战争时期,A国派出了许多间谍到其他国家去收集情报。因为间谍需要隐秘自己的身份,所以他们之间只是单向联系。所以,某个间谍只能单向联系到一部分的间谍。同时,间谍也不知道跟他联系的是谁。 HA是间谍们的老大,但他也只能联系到部分的间谍。HA现在有一项命令有告诉所有的...原创 2018-02-11 19:48:15 · 460 阅读 · 0 评论 -
来自看错题意的一份代码
由于之前看错题意了,花了很长的时间写了一份代码 大概就是先求最短路,再求次短路的暴力算法 算是复习了一下最短路和路径记录吧,并且希望下次看清楚题意再做题。如果按照代码翻译一下,就是建立一个图,求两点之间的最短路,再求次短路。 最后输出两者和#include using namespace std;int mp[150][150];int a[150][150];int b原创 2018-01-08 21:31:40 · 635 阅读 · 0 评论 -
hdu 2819 Swap [二分图匹配]
这道题其实是一道比较简单的题,但是我之前WA了一个晚上,简直不敢相信,当然也是我太想当然了,其实之前的写法有很大的问题,小数据就测不出来问题,所以反思一下,还是要谦虚,仔细啊。。这个题就是给你一个N*N的一个由0和1组成的图,然后让你通过交换行和列把他编程斜右下对角线上的元素都是1的情况,问你能不能实现,如果能,输出交换路径。根据题意我们发现,如果我们要满足斜对角线都是1的情况,至少要满足每一行都有原创 2017-10-13 09:18:44 · 205 阅读 · 1 评论 -
图论练习-有向图的强连通分量【tarjan】
这周刚刚看了图论的一些东西,感觉自己理解比较费劲,所以这里小小总结一下,如果有误,欢迎指出好了,现在我们来看一下图论的一些基础的概念: 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连通分量。那么在这个有向原创 2017-10-20 21:19:41 · 1305 阅读 · 0 评论 -
二分图匹配
最近做了一套匹配的题,然后就想简单的写一下 关于二分图匹配的问题。 首先二分图匹配是给N个人 分配P个任务,每个人对应一个任务,问能够匹配到的个数,而当个数最多是,这就是我们说的二分图的最大匹配,当每个人都有任务时,就是我们说的完美匹配。 那么这种问题应该如何求解呢? (当然,我们可以增加一个源点和汇点变成最大流问题)当然我们也可以通过另外一种方法现在我们假设我们通过dfs 不断寻找增广路来实原创 2017-10-11 21:33:57 · 476 阅读 · 0 评论 -
图论的模板
这里整理一些图论的模板最小生成树:kcruskal 算法 自剩下的未选取的边中找到最小边 如果和已选取的构成回路,则放弃int kcruskal(){int res=0;int i;sort(ed.begin,ed.end);for(i=1;i<=ed.size();i++){ int u=ed[i].u; int v=ed[i].v; if(findset(u)!原创 2017-04-09 23:33:23 · 280 阅读 · 0 评论