题目来源于牛客竞赛:https://ac.nowcoder.com/acm/contest/discuss
题目描述:
输入描述:
输出描述:
示例1:
示例2:
题解:
代码:
#include<cstdio>
const int MAX_N = 26;
int n,m;
int e[MAX_N];
char dp[1<<MAX_N];
int max(int x,int y){return x>y?x:y;}
int main(){
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++){
int x,y;
scanf("%d%d",&x,&y);
e[x]|=1<<y;
e[y]|=1<<x;
}
for(int i=0;i<n;i++){
e[i]|=1<<i;
e[i]=~e[i];
}
int it=0;
int an=0;
for(int i=1;i<(1<<n);i++){
if(!((i>>it)&1))it++;
dp[i]=max(dp[i^(1<<it)],dp[i&e[it]]+1);
an+=dp[i];
}
printf("%d\n",an);
return 0;
}
更多问题,更详细题解可关注牛客竞赛区,一个刷题、比赛、分享的社区。
传送门:https://ac.nowcoder.com/acm/contest/discuss