题目链接:

http://www.lydsy.com/JudgeOnline/problem.php?id=1143

题解:

给你一个DAG,求最大的顶点集,使得任意两个顶点之间不可达。

把每个顶点v拆成v和v',对于边u,v,建成(u,v'),得到一个二分图。

先对二分图floyd求闭包,然后求二分图的最大独立集就可以了。

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; const int maxn = 111; int mat[maxn][maxn];
int vis[maxn], lef[maxn];
int n, m; void init() {
memset(mat, 0, sizeof(mat));
memset(lef, 0, sizeof(lef));
} bool match(int u) {
for (int i = 1; i <= n; i++) {
if (mat[u][i]&&!vis[i]) {
vis[i] = 1;
if (!lef[i] || match(lef[i])) {
lef[i] = u;
return true;
}
}
}
return false;
} int main() {
while (scanf("%d%d", &n, &m) == 2 && n) {
init();
for (int i = 0; i < m; i++) {
int u, v;
scanf("%d%d", &u, &v);
mat[u][v] = 1;
}
for (int k = 1; k <= n; k++) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (mat[i][k] && mat[k][j]) {
mat[i][j] = 1;
}
}
}
}
for (int i = 1; i <= n; i++) {
memset(vis, 0, sizeof(vis));
match(i);
}
int cnt = 0;
for (int i = 1; i <= n; i++) {
if (lef[i] != 0) cnt++;
}
printf("%d\n", n - cnt);
}
return 0;
}

BZOJ 1143: [CTSC2008]祭祀river 最大独立集的更多相关文章

  1. Bzoj 2718: [Violet 4]毕业旅行 && Bzoj 1143: [CTSC2008]祭祀river 传递闭包,二分图匹配,匈牙利,bitset

    1143: [CTSC2008]祭祀river Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1878  Solved: 937[Submit][St ...

  2. bzoj 1143: [CTSC2008]祭祀river / 2718: [Violet 4]毕业旅行 -- 二分图匹配

    1143: [CTSC2008]祭祀river Time Limit: 10 Sec  Memory Limit: 162 MB Description 在遥远的东方,有一个神秘的民族,自称Y族.他们 ...

  3. BZOJ 1143: [CTSC2008]祭祀river 最长反链

    1143: [CTSC2008]祭祀river Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline ...

  4. [BZOJ 1143] [CTSC2008] 祭祀river 【最长反链】

    题目链接:BZOJ - 1143 题目分析 这道题在BZOJ上只要求输出可选的最多的祭祀地点个数,是一道求最长反链长度的裸题. 下面给出一些相关知识: 在有向无环图中,有如下的一些定义和性质: 链:一 ...

  5. BZOJ 1143: [CTSC2008]祭祀river(最大独立集)

    题面: https://www.lydsy.com/JudgeOnline/problem.php?id=1143 一句话题意:给一个DAG(有向无环图),求选出尽量多的点使这些点两两不可达,输出点个 ...

  6. BZOJ 1143 [CTSC2008]祭祀river(二分图匹配)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1143 [题目大意] 给出一张有向图,问最大不连通点集,连通具有传递性 [题解] 我们将 ...

  7. BZOJ 1143: [CTSC2008]祭祀river(二分图最大点独立集)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1143 题意: 思路: 二分图最大点独立集,首先用floyd判断一下可达情况. #include< ...

  8. 【刷题】BZOJ 1143 [CTSC2008]祭祀river

    Description 在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在水面上,奉龙王为神.每逢重大庆典, Y族都会在水面上举办盛大的祭祀活动.我们可以把Y族居住地水系看成一个由岔口和河道组成 ...

  9. [BZOJ]1143: [CTSC2008]祭祀river

    题目大意:给定一个n个点m条边的有向无环图,问最多选多少个点使得两两之间互不到达.(n<=100,m<=1000) 思路:题目所求即最长反链,最长反链=最小链覆盖,对每个点向自己能到的所有 ...

随机推荐

  1. Struts2_概述

  2. CSS之上边栏

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  3. 图解SQL的inner join(join)、left join、right join、full outer join、union、union all的区别

    对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Codin ...

  4. Sublime Python 插件配置合集

    Python PEP8 Autoformat 插件 这是用来按PEP8自动格式化代码的.可以在包管理器中安装.快捷键 CTRL+SHIFT+R 自动格式化python代码 { "auto_c ...

  5. hdu 1002大数(Java)

    A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  6. Python3 - 时间处理与定时任务

    1.计算明天和昨天的日期 #! /usr/bin/env python #coding=utf-8 # 获取今天.昨天和明天的日期 # 引入datetime模块 import datetime #计算 ...

  7. NodeJs多进程和socket.io通讯-DEMO

    一.开启多进程 const os = require('os'); const cp = require('child_process'); const forkList = {}; const fo ...

  8. 在windows下使用linux的开发环境

    windows下做开发确实有些不方便,比如python.ruby什么的都要自己装,不过这还是小事情.有一次想安装node-sass,windows下报错缺少MSBuild什么的,可能需要装一个vs解决 ...

  9. Connected_Component Labelling(联通区域标记算法) C++实现

    // Connected-Component Labelling.cpp : 定义控制台应用程序的入口点.//如有是使用,请务必注明引用出处网站:http://www.cnblogs.com/Amat ...

  10. Install GDAL in OpenSUSE 12.3 Linux

    Runtime Enviroment:Open SUSE Linux *i385 Notice:if any command disavliable ,you can copy the paramet ...