具体:http://www.verydemo.com/demo_c92_i155183.html
这题考察的是最大独立集问题, 算是裸的二分匹配, 只要在计算上添加一个n - count/2 就可以直接得出结果了。
不管是男的还是女的都一样,因为你男的算一边,女的再算一遍,这样算两遍, 不管你这个学号是男的还是女的,一点影响都没有。
#include
#include
maxn 505
e[maxn][maxn], n, m, dist[maxn], visit[maxn];
Init()
{
i, j, u, v, num;
chr;
memset(e, , (e));
memset(dist, , (dist));
(i=; i<= n; i++)
{
scanf(, &u);
u++;
(scanf(, &chr), chr!= );
(scanf(, &chr), chr!= );
scanf(, &num);
(scanf(, &chr), chr!= );
(j=; j<=num; j++)
{
scanf(, &v);
v++;
e[u][]++; e[u][e[u][]] = v;
}
}
;
}
Dfs( now)
{
i, v;
(i=; i<=e[now][]; i++)
{
v = e[now][i];
(visit[v] == );
visit[v] = ;
(dist[v] == || Dfs(dist[v]) == )
{
dist[v] = now;
;
}
}
;
}
Funs()
{
i, count = ;
(i=; i<=n; i++)
{
memset(visit, , (visit));
(Dfs(i) == )count ++;
}
printf(, n - count/);
;
}
main()
{
(scanf(, &n)!= EOF)
{
Init();
Funs();
}
;
}
1184

被折叠的 条评论
为什么被折叠?



