图论
Loi_whales
生活不止眼前的苟且,还有诗和远方的田野
展开
-
codevs1269匈牙利游戏(spfa跑次短路)
题目描述 Description Welcome to the Hungary Games! The streets of Budapest form a twisted network of one-way streets. 欢迎来到匈牙利游戏!布达佩斯(匈牙利首都)的街道形成了一个弯曲的单向网络。 You have been forced to join a race as原创 2016-10-21 19:46:03 · 391 阅读 · 0 评论 -
poj2457 Part Acquisition
题目大意:给你一些点和边(单向边),所有边权都相等,问从第一个点到最后一个点最少经过多少点(包含初始和结束点),并把这条最短路的路径上的点输出来。 当然,把题目直接翻译过来的话不是上述内容,你需要转换成上面的意思,这是一道最短路还原路径的典型题(模板题),具体实现如下:#include <cstdio>#include <iostream>#include <cstring>#include原创 2017-10-13 11:14:12 · 319 阅读 · 0 评论 -
bzoj2763飞行路线(dijkstra和SPFA两个版本)
这个题可以当成学习分层图的入门题,包括bzoj的2662冻结,很裸也很好帮助我们理解分层图思想。 SPFA版:#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <queue>using namespace std;const int MAXN = 100000;//不要开原创 2016-10-26 17:07:37 · 581 阅读 · 0 评论 -
bzoj2662冻结(SPFA和dijkstra两个版本)
索性把这个的题解也写了,把飞行路线的代码稍改下就行了 SPFA#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <queue>using namespace std;const int MAXN = 100000;int head[MAXN],dis[MAXN][2原创 2016-10-26 17:11:04 · 323 阅读 · 0 评论 -
poj1330Nearest Common Ancestors(暴力与倍增)
这道题的意思就是,给你一棵树,再从中取出任意两个节点,让你找他们的最近公共祖先,一个很裸地题,当倍增入门题不错。由于数据比较水,暴力也能A//暴力做法#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>using namespace std;int fa[100005];bool vis[1原创 2016-10-25 17:00:15 · 150 阅读 · 0 评论 -
poj2367(拓扑排序)
题目就是让你求拓扑序 拓扑排序就是,先找到入度为0的点,删去,同时把它的所有出度删去,再找新的入度为0的点,删去的点的顺序就是拓扑序#include <cstdio> #include <iostream>#include <cstring>#include <algorithm>using namespace std;int s[233][233];int in_degree[233原创 2016-10-27 15:11:24 · 1116 阅读 · 0 评论 -
codevs1506传话(tarjan)
这个题多种解法,我用tarjan又写了一遍#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <stack>using namespace std;const int MAXN = 2000;int n,m,to[MAXN<<1],head[MAXN],cd[MAXN],b原创 2016-11-11 14:16:42 · 449 阅读 · 0 评论 -
codevs2404糖果
题目描述 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候,lxhgww需要满足小朋友们的K个要求。幼儿园的糖果总是有限的,lxhgww想知道他至少需要准备多少个糖果,才能使得每个小朋友都能够分到糖果,并且满足小朋友们所有的原创 2016-11-11 11:23:58 · 354 阅读 · 0 评论 -
tarjan学习笔记(poj2186&&bzoj1051受欢迎的牛)
例题:受欢迎的牛 (Popular Cows)学习tarjan,首先明确一些概念 强连通图是:在有向图中,任意两点都能直接或间接连通的图叫做强连通图 强连通分量:在一个有向图中,极大的强连通子图就是强连通分量 tarjan要用到两个数组low[],dfn[]: 刚开始每个点的low值都等于dfn值 ,low是一个标记数组, 用来记录该点和该点的子树所能搜到的最早入栈的点的原创 2016-10-30 10:45:42 · 493 阅读 · 0 评论 -
noip2015D1T2信息传递
题目描述 Description 有个同学(编号为 1 到)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为的同学的信息传递对象是编号为的同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息,但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别人口中得知自原创 2016-11-09 21:12:52 · 349 阅读 · 0 评论 -
codevs1506 传话(拓扑排序)
刚开始naive的我还想用spfa,于是成功的T掉了四个点(当然可能有大神会用spfa做掉,那就请忽视本蒟蒻),不过好在加强了我对spfa判环的理解和应用,也算没白费那么长时间吧orz 60分的spfa代码:#include <cstdio>#include <iostream>#include <algorithm>#include <queue>#include <cstring>u原创 2016-10-28 20:01:41 · 539 阅读 · 0 评论 -
codevs1079回家
字符版热浪?#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<algorithm>#include<cstdlib>using namespace std;const int MAXN = 200000+5;int head[MAXN],tot,n,dis[MAXN],nxt[MAXN原创 2016-10-27 17:20:27 · 328 阅读 · 0 评论 -
最短路模板(SPFA+dijkstra)
本人dijkstra平时不怎么打,一般都用SPFA,用dijkstra求k短路比较方便。 求最短路是图论的一个很基础的问题,学好了,大有益处,听某神犇说,所有题都可以用最短路A掉orz%%%%%这里放这两个算法的模板,以热浪为例。 SPFA:#include <cstdio>#include <iostream>#include <cstring>#include <algorith原创 2016-10-25 19:20:08 · 746 阅读 · 0 评论 -
openjudge2971 抓住那头牛
奇葩做法,跑最短路,我用的SPFA#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <queue>using namespace std;const int MAXN = 400000+5;int n,k,head[MAXN],tot,nxt[MAXN<<1],dis[M原创 2016-10-30 20:58:02 · 789 阅读 · 0 评论 -
poj3723 Conscription
这个题目大意就不写了,注意男生和女生区分的话可以:(女:1,2,3…;男:n+1,n+2,n+3…),把两人之间的亲密度当做点与点之间有权值,就是求最大生成树,把权值换成负的,就是求最小生成树了。 数据输入量很大,要用scanf,不然会TLE。(poj教你养成随手scanf和printf的习惯,因为poj的题目老是卡这个) 代码如下:#include <cstdio>#include <ios原创 2017-10-13 16:17:33 · 281 阅读 · 0 评论