码迷,mamicode.com
首页 > 其他好文 > 详细

Gym - 101915D Largest Group 最大团

时间:2018-10-20 23:50:28      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:play   ide   pac   否则   efi   技术分享   最大   size   cas   

给你一个二分图 问你最大团为多大

解一:状压DP

解二:二分图最大匹配

二分图的最大团=补图的最大独立集

二分图最大独立集=二分图定点个数-最大匹配

技术分享图片
//Hungary
#include<bits/stdc++.h>
using namespace std;
#define N 50
int useif[N];   //记录y中节点是否使用 0表示没有访问过,1为访问过
int link[N];   //记录当前与y节点相连的x的节点
int mat[N][N]; //记录连接x和y的边,如果i和j之间有边则为1,否则为0
int gn, gm;   //二分图中x和y中点的数目
int can(int t) {
        int i;
        for (i = 1; i <= gm; i++) {
                if (useif[i] == 0 && mat[t][i]) {
                        useif[i] = 1;
                        if (link[i] == -1 || can(link[i])) {
                                link[i] = t;
                                return 1;
                        }
                }
        }
        return 0;
}
int MaxMatch() {
        int i, num;
        num = 0;
        memset(link, 0xff, sizeof(link));
        for (i = 1; i <= gn; i++) {
                memset(useif, 0, sizeof(useif));
                if (can(i)) {
                        num++;
                }
        }
        return num;
}
int main() {
        int TCASE;
        scanf("%d", &TCASE);
        while (TCASE--) {
                int n, k;
                int u, v;
                scanf("%d %d", &n, &k);
                gn = gm = n;
                memset(mat, 0, sizeof(mat));
                for (int i = 1; i <= k; i++) {
                        scanf("%d %d", &u, &v);
                        mat[u][v] = 1;
                }
                for (int i = 1; i <= n; i++) {
                        for (int j = 1; j <= n; j++) {
                                mat[i][j] = mat[i][j] ^ 1;
                        }
                }
                int ans = n * 2;
                ans -= MaxMatch();
                printf("%d\n", ans);
        }
}
View Code

 

Gym - 101915D Largest Group 最大团

标签:play   ide   pac   否则   efi   技术分享   最大   size   cas   

原文地址:https://www.cnblogs.com/Aragaki/p/9823328.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!