hdu 3335 Divisibility(二分匹配)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3335


这道题之前的一种做法是用Dancing Links做的 当然这道题也可以用 二分匹配做  

求符合要求的最长的链  在这里涉及到一个定理 Dilworth定理

此题还要除重

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define MEM(a,x) memset(a,x,sizeof a)
#define eps 1e-8
#define MOD 10009
#define MAXN 10010
#define MAXM 100010
#define INF 99999999
#define ll __int64
#define bug cout<<"here"< '9') c = getchar();
    int x = 0;
    while (c >= '0' && c <= '9') {
        x = x * 10 + c - '0';
        c = getchar();
    }
    return x;
}

void Print(int a)
{
     if(a>9)
         Print(a/10);
     putchar(a%10+'0');
}

ll a[MAXN],b[MAXN];
vector vec[MAXN];
int link[MAXN];
int n;
int ans;
int vis[MAXN];
int num;

bool dfs(int u)
{
    for(int i=0;i



你可能感兴趣的:(图的匹配问题,图论)