![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
文章平均质量分 81
AC_XXZ
努力了不一定会成功,但不努力肯定会失败
展开
-
POJ3414解题报告
#include#includeconst int maxn = 110;int vis[maxn][maxn]; //标记状态是否入队过int a,b,c; //容器大小int step; //最终的步数int flag; //纪录是否能够成功/* 状态纪录 */struct Status{ int k1,k2; //当前水的状态 int转载 2014-02-25 15:20:58 · 929 阅读 · 0 评论 -
POJ3255(次小生成树)
次小生成树裸题到某个点的次小次短路要么是其它某个点u的最短路加上u->v的边,要么就是到u的次短路加上u->v的边,因此所需要求的就是到所有顶点的最短路和次短路#include #include #include #include #include using namespace std;const int maxn = 5000 + 10;const int INF =原创 2015-02-09 17:44:54 · 889 阅读 · 0 评论 -
POJ3169(最短路+差分约束)
LayoutTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 7613 Accepted: 3658DescriptionLike everyone else, cows like to stand close to their friend原创 2015-02-11 17:52:47 · 908 阅读 · 0 评论 -
HDU1317( 负权处理)
题意:有n个房间(n思路:1.首先可以发现,只要知道到第n个房间时最大可以获得多少能量值(当然必须保证中途都大于0),就能知道能否赢。2.考虑到负环情况,跑SPFA的时候最长路负环是不会去循环的,所以负环其实可以不用考虑。3.考虑到正环情况,只要能到达正环(即SPFA处理过程中接触到正环中的点),并且正环能到达终点,就一定能赢。4.SPFA最长路松弛操作原创 2015-03-04 21:27:19 · 1744 阅读 · 5 评论 -
HDU3790(比较坑的最短路)
最短路径问题Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15024 Accepted Submission(s): 4573Problem Description给你n个点,m条无向边,每条边都有长原创 2015-03-08 22:42:49 · 1832 阅读 · 0 评论 -
HDU1690(Floyd最短路)
水题直接贴代码#include #include #include #include #include #include #include #include using namespace std;#define maxn 1200#define LL __int64const LL INF = 100000000002;LL sit[maxn];LL dis[m原创 2015-03-08 22:53:05 · 803 阅读 · 0 评论 -
hdu2962(最短路+二分)
题意:在最大的高度下面求最短路,由于题目给出限高,所以我们只需要二分高度然后用SPFA#include #include #include #include #include #include #include #include using namespace std;#define N 205#define maxn 2005const int INF = 999999原创 2015-03-08 22:51:41 · 1020 阅读 · 0 评论 -
HLJOJ1015(变形的多源最短路径)
题意:n,m,k,有n个村庄,有k条路,每个村庄有个电话亭,现在要在这些村庄中设一个中心电话亭,每个村庄的快递员需要带中心村庄报道然后返回(有向图),有m台电话,如果村庄配置电话的话就不需要去报道,求快递员最少总共走了多少路思路:先用floyd预处理下,然后求到每个村庄的最短路总和,比较最小的,这个就是中心电话亭,然后将这些和由大到小排序,减去前m大的#include #incl原创 2015-03-17 07:37:29 · 865 阅读 · 0 评论 -
HDU1839(最短路+二分)
在最大高度下求最短路径,我们将高度排序,然后二分高度就行,因为节点比较多用邻接表存储#include#include#include#include#includeusing namespace std;const int INF = 0x7fffffff;const int VN = 10005;const int EN = 500005;struct Edge原创 2015-03-08 22:55:58 · 820 阅读 · 0 评论 -
poj3259(最短路+负权处理)
题意:N,个点,M条路,W个虫洞,虫洞的边就是负的如果出现负环代表YES#include #include #include #include #include #include #include #include using namespace std;#define maxn 1000const int INF = 1111111111;int N,M,原创 2015-03-11 20:19:52 · 1052 阅读 · 0 评论 -
HDU1690(Floyd)
一开始我以为直线上怎么会有最短距离,后来发现每两点之间直接到和间接到达的距离一样的,比如 1 ->2->3 = 1->2+2->3但是不等于1->3的直接距离建完图以后直接Floyd就行,还有就是long long 会WA ,用__int64#include #include #include #include #include #include #include #incl原创 2015-03-11 20:48:52 · 991 阅读 · 0 评论 -
HDU1535(反向建边)
题意:求从出发点到每个车站的最短距离+从每个车站回到出发点的最短距离是多少思路:如果从每个点到出发点求一次最短路10^5个点10^5次求SPFA也会超时,那么如果我们反向建边的话可以只用一次SPFA,因为是单向边嘛,把箭头反过来,再求一次起点到各点的最短距离不就行了?#include#include#includeusing namespace std;const int inf原创 2015-03-11 20:59:34 · 1674 阅读 · 2 评论 -
HDU2066
#include #include #include #include using namespace std;const int Max_v = 1000 + 10;const int INF = 9999999;int cost[Max_v][Max_v];//权值int d[Max_v];//顶点s出发最短距离bool used[Max_v];//以使用过的图int V原创 2015-03-11 21:03:06 · 900 阅读 · 0 评论 -
HLJOJ1214(最短路)
1214: Around the worldTime Limit: 1 Sec Memory Limit: 128 MBSubmit: 12 Solved: 2[Submit][Status][Web Board]Description现在地图上有N个城市(你所在的城市编号为1),但是你的汽车油箱容量只有V,你只能在到达每个城市时才能够补充满油箱。现在告诉你原创 2015-03-25 21:07:44 · 722 阅读 · 0 评论 -
POJ3723
标题 ##将问题转化为最小生成树,由于题目的权值是10000-权值,所以我将最小生成树kruskal算法稍微改下,就是将边按照从大到小排序,最后减去最大的生成树权值就行## 标题#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <queue>#include <algorithm>原创 2015-02-09 17:36:21 · 883 阅读 · 0 评论 -
透析SPFA算法(图例讲解)
SPFA算法是Bellman-Ford的队列优化,所以先介绍Bellman-Ford算法。 Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。这时候,就需要使用其他的算法来求解最短路径,Bellman-Ford算法就是其中最常用的一个。该算法由美国数学家理查德•贝尔曼(R原创 2014-12-05 23:53:49 · 4355 阅读 · 1 评论 -
POJ 3278解题报告(C语言版)//Catch That Cow
广搜的简单运用B - Catch That CowTime Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64uSubmit StatusDescriptionFarmer John has been informed of the location of a fugitive cow a原创 2014-02-25 14:31:48 · 2006 阅读 · 0 评论 -
最短路径之Dijkstra算法
int cost[Max_v][Max_v];//权值int d[Max_v];//顶点s出发最短距离bool used[Max_v];//以使用过的图int V;//顶点数void dijkstra(int s){ fill(d,d+V,INF); fill(used,used+V,false); d[s] = 0; while(true)原创 2014-09-05 21:21:26 · 801 阅读 · 0 评论 -
最短路径之Floyd_Warshall算法
int d[Max_v][Max_v];//d[u][v]表示权值int V;//顶点数void Floyd(){ for(int k = 0; k < V; k++) for(int i = 0; i < V; i++) for(int j = 0; j <V; j++) d[i][j] = min(d[i][j],原创 2014-09-05 21:30:49 · 845 阅读 · 0 评论 -
2014暑假集训搜索专题
A - 漫步校园Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmitStatusDescriptionLL最近沉迷于AC不能自拔,每天寝室、机房两点一线。由于长时间坐在电脑边,缺乏运动。他决定充分利用每次从寝室到机房的时间,在校园里散散步。整个HDU校园呈方形布局,可划分为n*n原创 2014-07-22 21:08:20 · 864 阅读 · 1 评论 -
hdu1016(dfs)
#include #include #include #include #include using namespace std;int visit[100],a[100],n,m,makeprime[200],k = 0,mark[100];//visit代表数组有没有被访问,makerprime判断是否是素数,mark存正确的元素void init(){ for(in原创 2014-05-25 12:04:35 · 815 阅读 · 0 评论 -
POJ2236详细的解题报告(C语言版)
#include#includeint a[100000];int flag[100000];int b[100000][2];int n;void creat(){ for(int i=1;i<=n;i++) { a[i]=i; }}int set_friend(int x){ int r=x; while(a[r]!=原创 2014-02-25 13:26:53 · 1077 阅读 · 0 评论 -
ACdream区域赛指导赛之手速赛系列(4)
点击打开题目链接原创 2014-08-10 14:54:17 · 741 阅读 · 0 评论 -
高级数据结构设计--并查集及实现学习笔记(有趣篇)
并查集的程序设计: 为了解释并查集的原理,我将举一个更有趣的例子。话说江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲义气,绝对不打自己的朋友。而且他们信奉“朋友的朋友就是我的朋友”,只要是能通过朋友关系串联起来的,不管拐了多少个弯,都认为是自己人。这样一来,江湖上就转载 2014-09-28 10:42:43 · 1021 阅读 · 0 评论 -
最小生成树模板(poj3625)
Building RoadsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 9360 Accepted: 2690DescriptionFarmer John had just acquired several new farms! He wants to原创 2014-10-24 12:51:55 · 1726 阅读 · 0 评论 -
拓扑排序推荐博客
拓 扑 排 序 一个较大的工程往往被划分成许多子工程,我们把这些子工程称作活动(activity)。在整个工程中,有些子工程(活动)必须在其它有关子工程完成之后才能开始,也就是说,一个子工程的开始是以它的所有前序子工程的结束为先决条件的,但有些子工程没有先决条件,可以安排在任何时间开始。为了形象地反映出整个工程中各个子工程(活动)之间的先后关系,可用一个有向图来表示,图中的顶点代表活原创 2014-10-02 12:32:27 · 679 阅读 · 0 评论 -
poj2446
题意:给出一个矩形N*M棋盘,有K个格子是空洞,然后用2*1的矩形,对所有非空洞的格子进行覆盖,如果可以全部覆盖,就puts("YES");算法:建立二分图,用匈牙利算法;我们分别对所有的格子进行标号1.。。N*M将问题转化为二分图最大匹配问题。将棋盘按国际象棋棋盘那样添上黑白两种颜色,这样的话,黑色和白色的格子就构成了二分图的两个集合,即相邻的两个格子不会属于同个集合的。然后从上到下原创 2014-10-02 12:42:31 · 1542 阅读 · 0 评论 -
拓扑排序
初学者拓扑排序还是不好理解的,像我这样的笨蛋,看严蔚敏的书根本看不太懂,还是需要结合题目理解算法,下面是poj1094,比较坑比的一题,题出的不好。。但对于理解拓扑排序还是有帮助的,花了近一天的时间研究了,还行吧。。。原创 2014-06-01 14:44:23 · 939 阅读 · 0 评论 -
UVA11987(加权并查集)
Problem AAlmost Union-FindI hope you know the beautiful Union-Find structure. In this problem, you're to implement something similar, but not identical.The data structure you need to write原创 2014-10-02 21:28:38 · 818 阅读 · 0 评论 -
Codeforces Round #270(活用prim算法)
D. Design Tutorial: Inverse the Problemtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThere is an easy wa原创 2014-10-24 19:16:16 · 1554 阅读 · 0 评论