随笔分类 -  图论

无向图最短路径
摘要:无向图最短路径问题,是图论中最经典也是最基础的问题之一。本题我们考虑一个有 nn 个结点的无向图 GG。 GG 是简单完全图,也就是说 GG 中没有自环,也没有重边,但任意两个不同的结点之间都有一条带权的双向边。每一条边的边权是非负实数,但我们并不知道每一条边的具体边权。 好消息是我们知道 GG 中 阅读全文
posted @ 2017-11-06 12:09 怡红公子 阅读(3225) 评论(0) 推荐(0)
[HNOI2008]神奇的国度
摘要:DescriptionK国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系等等的存在.所谓N边关系,是指N个人 A1A2...An之间仅存在N对认识关系:(A1A2)(A2A3)...(AnA1),而没有其它认识关系.比如四边关系指ABCD四个人 AB,BC,CD,DA相互认识,而AC,BD不认识.全民比赛时,为了防止做弊,规定任意一对相互认识的人不得在一队,国王相知道,最少可以分多少支队。Input第一行两个整数N,M。1<=N<=10000,1<=M 阅读全文
posted @ 2013-03-11 15:44 怡红公子 阅读(1128) 评论(0) 推荐(1)
Knights
摘要:一开始写了个爆搜,WA30原来是用二分图最大匹配来做,表示还不是很理解啊!建图的时候又出了问题,原来要考虑奇偶性。。。 1 #include<iostream> 2 #include<fstream> 3 #include<cstring> 4 #define fin cin 5 using namespace std; 6 //ifstream fin("cin.in"); 7 8 int n,m; 9 int color[30][30]={0},num[30][30]={0},f[900]={0},totx=0,toty=0; 10 阅读全文
posted @ 2012-10-26 23:34 怡红公子 阅读(316) 评论(0) 推荐(0)
KM算法模版
摘要:1 #include<iostream> 2 #include<cstring> 3 #define N 500 4 using namespace std; 5 6 int n,w[N][N]; 7 int lx[N],ly[N],f[N];bool vx[N],vy[N]; 8 9 int Search(int k){10 vx[k]=1;11 12 for(int i=1;i<=n;++i)13 if(!vy[i]&&lx[k]+ly[i]==w[k][i])14 {15 if(f[i]==-1||Search(f[i]))16 ... 阅读全文
posted @ 2012-10-22 22:56 怡红公子 阅读(198) 评论(0) 推荐(0)
KM算法
摘要:引用1:KM算法是通过给每个顶点一个标号(叫做顶标)来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标为A[i],顶点Yi的顶标为B [i],顶点Xi与Yj之间的边权为w[i,j]。在算法执行过程中的任一时刻,对于任一条边(i,j),A[i]+B[j]>=w[i,j]始终 成立。KM算法的正确性基于以下定理: 若由二分图中所有满足A[i]+B[j]=w[i,j]的边(i,j)构成的子图(称做相等子图)有完备匹配,那么这个完备匹配就是二分图的最大权匹配。 这个定理是显然的。因为对于二分图的任意一个匹配,如果它包含于相等子图,那么它的边权和等于所有顶点的顶标和;如果它有的边不包 阅读全文
posted @ 2012-10-22 21:59 怡红公子 阅读(420) 评论(0) 推荐(0)
休息中的小呆
摘要:Description 当大家在考场中接受考验(折磨?)的时候,小呆正在悠闲(欠扁)地玩一个叫“最初梦想”的游戏。游戏描述的是一个叫pass的有志少年在不同的时空穿越对抗传说中的大魔王chinesesonic的故事。小呆发现这个游戏的故事流程设计得很复杂,它有着很多的分支剧情,但不同的分支剧情是可以同时进行的,因此游戏可以由剧情和剧情的结束点组成,某些剧情必须要在一些特定的剧情结束后才能继续发展。为了体验游戏的完整性,小呆决定要看到所有的分支剧情——完成所有的任务。但这样做会不会耽误小呆宝贵的睡觉时间呢?所以就请你来解决这个问题了。小呆会给你一个剧情流程和完成条件的列表,其中第一行有一个数n. 阅读全文
posted @ 2012-10-20 22:48 怡红公子 阅读(386) 评论(0) 推荐(0)
tarjan算法模版
摘要:1 #include<iostream> 2 #define num 5000 3 #include<cstring> 4 using namespace std; 5 6 int n,m; 7 int f[num]; 8 9 10 typedef struct{11 int u,v,next;12 }z;z edg[num];13 int edgs=0,head[10000];14 void Addedg(int a,int b){15 edgs++;16 edg[edgs].u=a;edg[edgs].v=b;17 edg... 阅读全文
posted @ 2012-10-17 19:48 怡红公子 阅读(230) 评论(0) 推荐(0)
间谍网络
摘要:描述 Description由于外国间谍的大量渗入,国家安全正处于高度危机之中。如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B。有些间谍接受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报。所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子。因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间谍,掌握新的情报。我们的反间谍机关提供了一份资料,包括所有已知的受贿的间谍,以及他们愿意收受的具体数额。同时我们还知道哪些间谍手中具体掌握了哪些间谍的资料。假设总共有n个间谍(n不超过3000),每个间谍分别用1到3000的整数来 阅读全文
posted @ 2012-10-17 19:47 怡红公子 阅读(274) 评论(0) 推荐(0)
宿命的P.S.S
摘要:题目描述1.背景描述BackgroundP.S.S:“我来自哪里?”WH:“你来自一个图。”P.S.S:“我是谁?”WH:“你是最小生成树。”P.S.S:“我又要到哪里去?”WH:“你要成为一个最小完全图(边权之和最小的完全图)。”P.S.S:“为……为什么啊?”WH:“这是你的宿命!因为你无聊!!!P.S.S!”2.问题描述Description最小生成树P.S.S在宿命的指引下找到了巫师Kismi。P.S.S希望Kismi能帮自己变成一个完全图。Kismi由于某些不可告人的原因,把这件事交给了你。PS: 可以保证,这个最小生成树对于最后求出的完全图是唯一的。7.时间限制Time Limit 阅读全文
posted @ 2012-09-29 18:34 怡红公子 阅读(340) 评论(0) 推荐(0)
Cactus
摘要:Problem Description1. It is a Strongly Connected graph.2. Each edge of the graph belongs to a circle and only belongs to one circle.We call this graph as CACTUS.There is an example as the figure above. The left one is a cactus, but the right one isn’t. Because the edge (0, 1) in the right graph belo 阅读全文
posted @ 2012-07-22 08:54 怡红公子 阅读(314) 评论(0) 推荐(0)