链接:LightOJ - 1356 Prime Independence
题意:
定义:若 a a a是 b b b的质数倍,即 a = k × b a=k\times b a=k×b(其中 k k k为质数),则称 a a a、 b b b相关联;
给出 N ( 1 ≤ N ≤ 40000 ) N\,(1\le N\le 40000) N(1≤N≤40000)个正整数 x ∈ [ 1 , 500000 ] x\in [1,500000] x∈[1,500000],求最大独立集的元素个数?(独立集中任意两个元素均无关联)
分析:
最大独立集问题可以想办法转化为二分图求解,将正整数 按照其质因数分解形式,可以分为 奇数个质数相乘 和 偶数个质数相乘,显然 所有奇数个质数相乘的正整数两两之间,必定无关联,偶数个的同理。
于是,就可以将 1 1 1 ~ 500000 500000 500000的正整数根据其质因数分解的个数奇偶染色,划分为二分图,再根据关联两两连边,最后求解最大独立集。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int INF=0x3f3f3f3f;
const int maxn