摘要: 最短带权路径问题的解法::Dijkstra & Floyd 在一个网络中,如果两个结点之间有直接的因果关系,则这两个结点直接连通,在连接两个结点的弧上标上它的代价或权,值得注意的是这样的代价不一定是对称的,即A到B的代价不一定等于B到A的代价,实际问题中以行船为例,有顺水和逆水的区别。在图G中,给出两个结点求这样一条最短的路径,使经过这条路径上的代价之和最小,这就是最短路径问题。 如果所有弧上的权都相等,则问题退化为求两个结点间的一条路径使经过的中间结点最少。比如在一个城市的交通网络中,乘客关心的可能只是旅途中中转的次数,只希望转更少次数的车。对于这样的问题,运用BFS对图进行层次遍历 阅读全文
posted @ 2011-02-10 23:16 CoderZhuang 阅读(707) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1325两台机器A,B,A有n个模式,B有m个模式,现在有k个工作,其中每一个工作可以由A或B中的一个特定模式来完成,但是切换机器的模式要重新启动一次,问最少要重启多少次机器才能完成所有工作?A,B两台机器构成一个二分图,在之间按照给出的条件连边。这样想,每一个工作其实是由一条边来代表的,那么我们只要用最少的顶点来覆盖所有的边即可。这就是最小覆盖。根据公式:最小覆盖=最大匹配;对原二分图做一次最大匹配即可。对了,针对这个题还有一个问题,就是起始状态下是在mode 0的,如果在这个模式下工作,是不需要切换mode的,所以只要有工作是在mode 阅读全文
posted @ 2011-02-10 23:06 CoderZhuang 阅读(188) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2771老师带学生出去旅游,但是担心学生会发生恋爱关系,所以带出去的学生至少要满足以下要求之中的一个:1.身高相差40cm以上2.同性3.喜欢的音乐风格不同4.喜欢的运动相同问最多可以带出去多少学生?个人感觉如果有男有女,就很有可能是二分匹配了。这道题我们反过来想,如果将所有可能发生恋爱关系的男女配对,那么可以带出去的人数应该等于这个二分图的最大独立集。根据公式: 最大独立集=顶点数(包括X和Y)-最大匹配求一次匹配即可。Source CodeProblem: 2771User: 541780774Memory: 1088KTime: 579 阅读全文
posted @ 2011-02-10 21:28 CoderZhuang 阅读(192) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3216题目说的是一个城市里面有Q个点,有M项工作,每个工作有个工作地点pi,最晚开始时间ti,和工作需要的时间di.从城市中的任意一个点到另一个点的直接时间又一个矩阵给出。不连通为-1.注意间接联通是被允许的。我再这个题上哉了2次,汗啊。我总是以为二分图的顶点时基于城市中的点的,但实际上时基于工作。这一题首先对给定的图做一次floyd,这样就能求出两个点之间最少需要走的时间。然后判断两个工作之间是否存在先后关系最后做最小路径覆盖即可。注意这里的顶点数应该是工作数!这一题值得重点注意!!!Source CodeProblem: 3216Use 阅读全文
posted @ 2011-02-10 18:07 CoderZhuang 阅读(212) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1125题意:有n个股票经纪人,要求从中选择一个作为散发谣言的开端,使得最后一个人收到谣言时时间时最短,当然谣言只能在有关联的两人这间传播。要注意从A到B和从B到A的时间并不等价!!解题:典型的最短路问题,套用Floyd算法即可。Source CodeProblem: 1125User: 541780774Memory: 408KTime: 0MSLanguage: G++Result: AcceptedSource Code#include<stdio.h> #include<stdlib.h> #include&l 阅读全文
posted @ 2011-02-10 17:57 CoderZhuang 阅读(138) 评论(0) 推荐(0) 编辑