
ACM_graph
Simmu
这个作者很懒,什么都没留下…
展开
-
LA 3126
思路:将可以从一个地方赶到另一个地方这个关系看作是二分图的X集合的元素和Y集合的元素有关系。那么就是直接求其最小路径覆盖。 #include #include #include #include #include #include using namespace std; int marky[510]; int pre[510]; vectorq[510]; struct node {原创 2013-09-12 23:49:26 · 492 阅读 · 0 评论 -
uva 11419
思路:白书上面的例题,将row和col分别看成二分图的X集合和Y集合,每个目标的存在看成这个目标所在的row和这个col有关系。那么,剩下的就是求如何用最少的(row+col)来覆盖这些边。就是最小点覆盖问题。最小点覆盖=最大匹配;详细请看:http://www.matrix67.com/blog/archives/116实现代码资料参考:http://blog.youkuaiyun.com/wiking__原创 2013-09-11 23:16:27 · 419 阅读 · 0 评论 -
poj 2135
思路:由于要求两条不重合边的单源最短路,所以可以考虑用最小费用最大流来做。 设虚拟起点vstart到1的容量为2,cost为0,虚拟终点vend到n的容量为2,cost为1,其他的边的容量为1,cost为输入的值。 那么其实就是求这个构造的图的最小费用最大流了。 我看到很多都是用next数组神马的,啊啊,对于我这样的懒家伙,于是想用vector。硬是把它给过了。 提示:边是双向的,所以要加原创 2013-09-12 22:11:11 · 510 阅读 · 0 评论 -
poj 3159
简单的查分约束系统的模版题,由于现在只是做了这一道,所以还没有什么想法。 总体思路就是运用最短路。 #include #include #include #include #include #include #define inf 1e9 using namespace std; const int MAXN=31000; struct node { int num; int原创 2013-09-18 09:51:36 · 405 阅读 · 0 评论 -
poj 3469
题意 给你两个cpu,有多个任务,每个任务各在两个cpu中所需要花费的代价,并且,告诉你有的任务如果不在同一个cpu上工作会花费额外的代价,问你求最小的代价。 思路: 最小割。 构图: 设置虚拟结点S,T。分别将每个任务连接在S,T上,从S到某个点,从某个点到T,权值为其代价。由于有的结点之间如果不在一起的话,会有额外的代价,这种关系是要体现出来的,所以,我们这样来做,因为我们的割是表示原创 2013-10-03 16:28:21 · 479 阅读 · 0 评论 -
soj 3109
题意 中文题。 思路 由于选择实验和工具是必须在一起的,所以他们之间的连接的权值必须为无穷大。然后,用割对于实验来说,就是不要这个实验,而对于工具来说,就是选择这个工具。 所以,设置两个虚拟结点S,T。S连接所有的工具,权值为其花费,T连接所有的实验,权值为其利润。如果实验和工具之间有关系的话,那么他们之间连一条边,权值为无穷大。那么求得的最小割就是其总共花费的代价,用总共的利润-总共的代原创 2013-10-03 16:09:02 · 442 阅读 · 0 评论