摘要: 继续复习二分图题意:比较裸的二分图,输入n,表示n个不同的课程,下面n行,每行首先是m,表示后面跟着m对信息,每对信息为(p,q),表示在星期p的第q节上这节课,(一周7天,一天12节课)。问你怎么匹配,可以让这个人一周上最多的课。建立二分图,X为时间,[0,83],Y为课程,[0,n-1],然后有向边Y--->X,进行匈牙利一次即可#include <cstdio>#include <cstring>#define N 410#define M 50500int n,tot;int match[N];int head[N];struct edge{ int u, 阅读全文
posted @ 2013-05-10 20:55 Titanium 阅读(261) 评论(0) 推荐(0) 编辑
摘要: /*题意:给一个有向图,问有多少个点,是其他点都可以到达的其他点都可以到达该点,那么将图转置,就变为该点可以到达其他所有的点要找这样的点方法有很多,仿照Floyd的DP方法就是最容易写,但是点太多达到10000,会超时这里用SCC来做将转置后的图进行缩点,得到一个DAG,这个DAG每个大点内的小点(即原来的点)都是相互可达,关键是看这些大点能不能去到其他大点,如果一个大点能去到其他所有的大点,那么里面的小点也可以所以就是要找,有多少个大点,可以去到所有其他的大点,可知这样的大点,最多1个!!,而且是入度为0的点(这个不难理解,可以思考一下)找到了这个大点,那么里面包含的小点就都是可以的,所以扫 阅读全文
posted @ 2013-05-10 12:08 Titanium 阅读(214) 评论(0) 推荐(0) 编辑