摘要: 题意: 一些男生和一些女生之间有爱慕关系,已知一些男生和女生的爱慕关系,学校想从这些学生中找出一些的学生满足这些学生之间彼此都没有爱慕的关系--!~,问找出的这个集合最多可以有多少人。分析:求二分图的最大独立集最大独立集=顶点数-最小点覆盖 由于这道题中爱慕关系是相互的,可以看成是无向图,可以将每个人拆成两个点 由于是无向图 ,最小点覆盖数=最大匹配/2#include<stdio.h>#include<string.h>#define clr(x)memset(x,0,sizeof(x))struct node{ int to,next;}e[10000];int t 阅读全文
posted @ 2012-07-21 14:16 'wind 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 题意: 有 F 种食物, D 种饮料,和 N 头牛, 每头牛只吃自己喜欢的食物,喝自己喜欢的饮料,知道了每头牛喜欢哪些 食物 和 饮料,一头牛只有在可以吃到自己喜欢的食物喝到自己喜欢的饮料的情况下才会开心,问如何分配食物和饮料可以使尽量多的牛开心。分析: 在 源点 和 每种食物之间 连一条边,容量为 1,将每头牛拆成两个点,将每头牛的第一个点和第二个点之间连一条容量为 1 的边,在每头牛喜欢的食物和该牛的第一个点之间连一条容量为 1 的边,在每头牛喜欢的饮料和该牛的第二个点之间连一条容量为 1 的边,在 汇点 和每种饮料之间连一条容量为 1 的边,求最大流。#include<stdio. 阅读全文
posted @ 2012-07-21 13:40 'wind 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给出一个图,矿场位置,zfy和kevin的寝室位置,zfy和kevin一起从矿场回寝室,要求他们两人回寝室的最短路径,而且,在保证他们两人都是走的最短路径的同时,还要保证他们两个人一起走的距离尽可能的多。解题报告:以下图为例,3到1的最短路为23,3到2的最短路径为24,他们先从3走到5,然后各自回家,能保证都是走的最短路径,同时也能一起走20的距离首先,必须求出矿场B到各个点的最短路径,求出C到各个点的最短路径,再求出N到各个点的最短路径。我们用D[i][j]表示i到j之间的最短距离使用三次DIJKSTRA算法即可完成然后我们枚举zfy和kevin的分离点,枚举出了B, C, N之 阅读全文
posted @ 2012-07-21 00:45 'wind 阅读(204) 评论(0) 推荐(0) 编辑