图论
smallacmer
这个作者很懒,什么都没留下…
展开
-
Graph Coloring&&http://poj.org/problem?id=1419最大团问题
好久没做题了,做起题来感觉各种没感觉,简直弱爆了,先说下这一题题意:就是给你一个无向图,有黑白两种颜色,让你对该图进行染色,要求任意相邻两点不能为同一种颜色,问你最后可以染多少个黑色的顶点,很显然是让你求最大独立集问题(所求得的该顶点集中任意两点都没有边),而经分析可知最大独立集=相对应完全图补图的最大团而求最大团很容易想到用子集树来求,只需带一下子集树的模板就行了·~~AC代码:原创 2013-04-23 18:26:25 · 2246 阅读 · 0 评论 -
图论简介
图论小结1 拓扑排序:复杂度o(n+m)普通的拓扑排序没什么好说的,在一些特殊结构的拓扑图上(比如自动机,度有限制的图或树),结合最小表示法(我一般都是并查集+map)可以判图的同构推荐题:Poj3687 Uvalive3981 Ural18722 最短路 : a) bfs: 复杂度o(n+m),适用于边权为1的图b) 扩展bfs : 复杂度o(n+m),适用于原创 2011-11-12 18:35:23 · 1135 阅读 · 0 评论 -
Bus System
这一题太蛋疼了,,,,建图太麻烦了,,,,#include#includeusing namespace std;#define M 0x7f7f7f7f7f7f7f7fLLtypedef long long LL;LL mat[105][105];LL cor[105];LL L1,L2,L3,L4,C1,C2,C3,C4;int n,m; LL change(LL x原创 2011-11-10 17:33:12 · 657 阅读 · 0 评论 -
http://poj.org/problem?id=3259
第一次用stl中的邻接表写,,以前总怕超时,,,,木想到还行,,,这一题就是判断是不是存在负环,,,题意:一个农民在自家农场的不同地点发现一堆虫洞,每个虫洞可以回到不同长度的过去,于是这个农民想通个时间旅行回到出发点的”过去”。#include#include#include#define N 505#includeusing namespace std;struct No原创 2011-11-10 15:30:30 · 667 阅读 · 0 评论 -
http://poj.org/problem?id=3159
这道题很是给力啊,,spfa+stack一下AC了,,有点小激动,,,,,大自的说一下题意啊,,,就是班长分蜡烛,让你求该班长和他那班的一个同学所分蜡烛差的最大值,,下面介绍一下建图思想,,假设第i个同学有a[i]个蜡烛,设dist[i]为第i个同学相对于第一个同学的蜡烛数,d[i]=a[i]-a[i];d[1]=0;题目让输入的A B C表示 a[B]-a[A]下面是这两天我的得出得原创 2011-11-08 21:18:37 · 636 阅读 · 0 评论 -
http://poj.org/problem?id=2983
终于用spfa把它AC了,,,这道题把我这几天满满的自信都打击的木有了,,,,,一开始用bellman——ford做的还算顺利,但是我想用spfa做一下,,,于是就向别人那样用了头插法,,但是悲剧的是我每次提交总是一个样WA,,,,我于是上网搜了搜,,发现spfa的都是用的是链表,,,但他们不是用的指针,,而我用的是指针,,,就这一点区别,,我的就是过不了,,,太打击人了,,,心在滴血啊,,,,,原创 2011-11-08 17:16:42 · 608 阅读 · 0 评论 -
http://poj.org/problem?id=1062
dijstra+枚举法,,,题意中文不再说明了,,,,,解法:求一点到其他所有点的最短路径(还要加上终点的pri[]),在一条路径上点与点之间的等级差不能超过n,扫描区间因为每条路径都要经过点1,所以依次扫描区间[ lev[1]-n , leve[1] ]......[ lev[1] , lev[1]+n ]代码:#include#include#include#原创 2011-11-07 20:14:48 · 591 阅读 · 0 评论 -
http://acm.timus.ru/problem.aspx?space=1&num=1416&&次小生成树
这一题浪费了我不少时间啊,,,,很是伤心,,以前写过用prim添边删边的题,,于是果断安以前的方法去做结果是一个劲的wa,,,,,最后实在木办法了,就用krusal写 了一遍,结果很是给力,,过了,,Ac代码:#include#define N 250010#define M 99999999#includeusing namespace std;struct Node{in原创 2011-11-07 09:21:25 · 977 阅读 · 0 评论 -
http://acm.nyist.net/JudgeOnline/problem.php?pid=20
今天一搞AC的哥们问了这一题,,它是用邻接表写的,,而且还是用动态的,,让我给他找错,我深知我没写过的,它硬是让我给他找,这不是坑爹嘛,最后实在木办法,,我给他写了个静态的邻接表,它却很淡定的说我要的是动态的,,很是无语啊,,这一题就是bfs,以前是用stl写了,今天自己写了一下,,,感觉还行,,调试时wa了2次,,,真的需要有待提高的,,,#include#include#inclu原创 2011-11-27 10:57:02 · 773 阅读 · 0 评论 -
http://acm.nyist.net/JudgeOnline/problem.php?pid=118&&次小生成树
昨天做的次小生成树的用的是标记法,,,今天用的的是,,,,添边,删边法,,代码:#include#include#include#define N 501#define M 9999999#define MM -999999using namespace std;int map[N][N],maxs[N][N],dist[N];bool visit[N];int n,m;原创 2011-11-06 10:35:37 · 779 阅读 · 0 评论 -
http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?&&次小生成树
这是个次小生成树的题,首先介绍一下什么事次小生成树,,,就是存在有两个及以上的最小生成树,,,,这一题用krusal TLE。。。因此选用了prim算法,,,,思想就是:如果存在一个点i它的dist【i】可以由两个或两个以上的其他点更新得到,那么最小生成树肯定不唯一了,,,,法一:#include#include#define N 101#define M 99999999usin原创 2011-11-05 11:11:20 · 1178 阅读 · 0 评论 -
http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?cid=963&pid=1019&ojid=1
这一题是dijstra的变种,,,用的是dijstra的思想和方法,让求的是从一点到另一点的最大的最小值,,,,一开始木有认真读题,,,贡献了5次wa,,,#include #include #includeusing namespace std;#define MAX 201#define INF 10000.0ffloat matrix[MAX][MAX];int s[MAX];原创 2011-11-04 13:19:12 · 1260 阅读 · 0 评论 -
http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?pid=1004&ojid=2&cid=963&hide=0
#include#include#define N 101#define M 99999999.0#define FOR(i,s,t) for(int i=(s);i<=(t);++i)#includeusing namespace std;double map[N][N];double dist[N];bool visit[N];struct point{ double原创 2011-11-03 19:45:33 · 1317 阅读 · 0 评论 -
http://acm.nyist.net/JudgeOnline/problem.php?pid=129
#include#include#define N 10005using namespace std;int parent[N];int r[N];void make(){ for(int i=0;i<N;i++) { parent[i]=i; r[i]=0; }}int find_set(int x){ return parent[x]==x?x:find_se原创 2011-11-03 11:26:23 · 790 阅读 · 0 评论 -
SPFA+DP&&http://acm.nyist.net/JudgeOnline/problem.php?pid=203
这几天忙着复习也没顾得刷题,,罪过啊,,O(∩_∩)O~这一题是一道小综合题,最短路和0—1背包结合,,调试了好大一会,,纠结,,感觉自己弱爆了,, #include #include #include #include #define N 101 #define M 0x3f #include using namespace std; typedef struct原创 2011-11-24 13:22:30 · 535 阅读 · 0 评论 -
最短路各种算法 稠密图 稀疏图 时间分析
分别有下面这几种算法(heap写了好久 T T 。。)其中未注明LIST的SPFA 和 dij 是邻接矩阵的形式。heap是手写的堆,邻接表存图。priority指的是调用C++里的STL。Dijkstra Dijkstra_priority Dijkstra_List Dijkstra_Li转载 2011-11-03 21:47:25 · 905 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=3371
这是今天xd弄的一个专题,,,,很是坑爹,,,c++过了,但是g++就是过不了,,,让我纠结了半个多小时,,,悲催,,,prim算法:#include#include#define N 505#define M 99999999#define FOR(i,s,t) for(int i=(s);i<=(t);++i)using namespace std;int n,m原创 2011-11-03 18:44:26 · 794 阅读 · 0 评论 -
2011 Multi-University Training Contest 1 - Host by HNU&&Earth Hour
这道题木想到竟然可以转发为最短路问题,,让我纠结了近一个下午,,更悲剧的是spfa竟然写错了,,,下面说一下题意,就是在世界日这一天里为了响应号召某大学决定关掉除到图书馆,自习室,寝室的路灯,最后问最多可以关多少路灯,,思路:根据路灯的照射范围判断两个地方是不是相通如果相通就连成边同时把边权设置为1,然后求3次最短路径,,再枚举各个点找到dis1[i]+dis2[i]+dis3[i]最小的那个从而原创 2012-01-03 21:01:55 · 525 阅读 · 0 评论 -
http://poj.org/problem?id=2239&&Selecting Courses
水题不解释。。。。AC代码:#include#include#includeusing namespace std;int match[85];bool visit[85];vectormap[301];int n;bool dfs(int x){ int m=map[x].size(); for(int i=0;i<m;++i) { int p=map原创 2012-01-04 14:46:08 · 589 阅读 · 0 评论 -
Anger Begins&&http://acm.nbut.cn:8081/Contest/view/id/29/problem/A.xhtml
题意:给你一些路的首尾坐标,求从A路是否能到达B路思路:先判断线段是否相交建图,然后求多源多点最短路即可,AC代码:#include #include#include#include#define CLR(arr,val) memset(arr,val,sizeof(arr))using namespace std;#define N 105#define inf 1<<原创 2012-12-01 17:08:00 · 958 阅读 · 0 评论 -
2-sat&&http://poj.org/problem?id=3648
第一道2-sat题,各种坑,各种变态,~,只因为建图的时候多乘了个2,让跪了好几次,而为了找这个错误发了我一整天的时间,真心伤不起~~下面简单说说2-sat的解题步骤:1,构图,难点2,求有向图的最大强连通分量3,缩点,并重新反向建图4,拓扑排序后,进行染色5,有的题需要二分求答案一、关于模型:一个2-SAT模型应该是一个满足以下的条件的满足性问题:原创 2012-12-01 10:41:06 · 1008 阅读 · 0 评论 -
Air Ports&&http://www.lightoj.com/volume_showproblem.php?problem=1059
最小生成树变形,这一题,真他妈的恶心,由于没看清最后一句话,导致一直wa,,在修建机场和修路方面,如果修路的费用和修飞机场的相同,则优先考虑修飞机场,,法一:#include#include#include#include#define pf printf#include#define N 100005#define M 10005using namespace std;原创 2012-08-01 10:43:55 · 1088 阅读 · 0 评论 -
欧拉回路的应用&&http://acm.hdu.edu.cn/showproblem.php?pid=3018
题意:给你一个图,问你最少几笔能画完该图,其中孤立的点除外#include#include#include#include#define N 100005#include#includeusing namespace std;int Father[N];vectora;//记录根节点,其长度为连通分支的个数int in[N];int num[N];/原创 2012-07-25 16:53:50 · 5503 阅读 · 0 评论 -
find the safest road&&http://acm.hdu.edu.cn/showproblem.php?pid=1596
最短路变形,求最长路即可。。。。AC代码:#include#include#include#include#include#include#define N 1005#define M 1000005#define MIN -99999999using namespace std;typedef struct node{ int num;原创 2012-07-26 08:56:21 · 829 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=3790&&最短路径问题
Problem Description给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。Input输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点。n和m为0时输入结束。原创 2011-10-20 16:52:08 · 756 阅读 · 0 评论 -
Connections between cities&&2009 Multi-University Training Contest 8 - Host by BJNU
Problem DescriptionAfter World War X, a lot of cities have been seriously damaged, and we need to rebuild those cities. However, some materials needed can only be produced in certain places. So we n原创 2012-07-18 17:06:55 · 632 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=3549&&ISAP
网络流入门题,第一次用ISAP写网络流的题~~~~~Improved SAP(ISAP)算法ISAP字面意思是改良的最短增广路算法。关于ISAP,一位叫 DD_engi 的神牛讲非常清楚,引用一下:SAP算法(by dd_engi):求最大流有一种经典的算法,就是每次找增广路时用BFS找,保证找到的增广路是弧数最少的,也就是所谓的 Edmonds-Karp 算法。可以证明的是在原创 2012-05-04 15:57:38 · 1039 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=1878&&欧拉回路
判断无向图的欧拉回路,不解释,,,,AC代码:#include#include#include#define CLR(arr,val) memset(arr,val,sizeof(arr))#define N 1001using namespace std;int deg[N];int Father[N];void init(int n){ CLR(deg,0);原创 2012-07-14 16:59:49 · 5087 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=1116&&Play on Words
Problem DescriptionSome of the secret doors contain a very interesting word puzzle. The team of archaeologists has to solve it to open that doors. Because there is no other way to open the doors, th原创 2012-07-08 09:22:46 · 745 阅读 · 0 评论 -
http://acm.nyist.net/JudgeOnline/problem.php?pid=99&&单词拼接
描述 给你一些单词,请你判断能否把它们首尾串起来串成一串。前一个单词的结尾应该与下一个单词的道字母相同。如alohadogarachnidgophertigerrat可以拼接成:aloha.arachnid.dog.gopher.rat.tiger输入 第一行是一个整数N(0每组测试数据的第一行是一个整数M,表示该组测试数据中有M(2原创 2012-07-08 16:53:46 · 633 阅读 · 0 评论 -
欧拉路和欧拉图
一:如何判断图G具有一条欧拉路?对于无向图而言,当且仅当图G是连通图,且有零个或者两个奇度顶点。经典题一笔画问题。二:怎样判断图G是欧拉图?对于无向图,当且仅当图G是连通的,并且每个顶点都是偶度顶。对于有向图,当且仅当G是连通的且每个顶点的出度等于入度。证明方法请查阅离散数学。原创 2012-05-21 20:42:42 · 5218 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=3342&&拓扑入门题
Legal or NotTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1743 Accepted Submission(s): 764Problem DescriptionACM-DIY is a large QQ gr原创 2012-04-05 09:31:37 · 856 阅读 · 0 评论 -
有向图的强连通分量&&Tarjan算法
[有向图强连通分量]在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。下图中,子图{1,2,3,4}为一个强连通分量,因为顶点1,2,3,4两两可达。{5},{6}也分别是原创 2012-03-15 08:56:33 · 668 阅读 · 0 评论 -
最小点覆盖集&&http://acm.nyist.net/JudgeOnline/problem.php?pid=237
首先解释一下什么是最小点覆盖集,存在这样一个最少点集使得图中所有的边至少有一个顶点在该集合中。因为最小点覆盖集=最大二分匹配所以这道题可以转化为最大二分匹配问题。。。。证明过程http://www.matrix67.com/blog/archives/116#include#include#include#define N 501using namespace std;v原创 2012-02-24 09:33:53 · 602 阅读 · 0 评论 -
http://acm.nyist.net/JudgeOnline/problem.php?pid=211&&有向图传递闭包问题
这一题是有向图的传递闭包问题,,,而这提的要求就是输出有多少牛可以确定名次的。算法思想:求出每个牛的出度和入度之和看是否等于n-1(n为牛的个数),我这里是用floyd算法写的,,,#include#include#include#include#define N 105#define FOR(i,s,t) for(int i=(s);i<=(t);++i)using原创 2011-11-02 12:15:11 · 498 阅读 · 0 评论 -
http://poj.org/problem?id=1456&&并查集
DescriptionA supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadline dx that is measured as an integral number of time units starting from t原创 2011-10-22 13:27:23 · 547 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=2066&&多源多点
Problem Description虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时原创 2011-10-20 21:52:23 · 828 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=2544&&最短路
水题。。。。dijstra算法。。。。#include#include#include#include#define M 99999999#define N 105#define FOR(i,s,t) for(int i=(s);i<=t;++i)using namespace std;int dist[N];int map[N][N];bool visit[N];in原创 2011-10-20 16:28:29 · 557 阅读 · 0 评论 -
http://poj.org/problem?id=1287&&prim
DescriptionYou are assigned to design network connections between certain points in a wide area. You are given a set of points in the area, and a set of possible routes for the cables that may conne原创 2011-10-20 13:04:12 · 585 阅读 · 0 评论 -
http://poj.org/problem?id=1861&&Kursal
DescriptionAndrew is working as system administrator and is planning to establish a new network in his company. There will be N hubs in the company, they can be connected to each other using cables.原创 2011-10-20 12:28:53 · 565 阅读 · 0 评论