博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
「日常训练」All Friends(POJ-2989)
阅读量:4667 次
发布时间:2019-06-09

本文共 1602 字,大约阅读时间需要 5 分钟。

题意

分析

代码

#include 
#include
#include
#define MP make_pair#define PB emplace_back#define fi first#define se second#define ZERO(x) memset((x), 0, sizeof(x))#define ALL(x) (x).begin(),(x).end()#define rep(i, a, b) for (repType i = (a); i <= (b); ++i)#define per(i, a, b) for (repType i = (a); i >= (b); --i)#define QUICKIO \ ios::sync_with_stdio(false); \ cin.tie(0); \ cout.tie(0);using namespace std;typedef long long ll;typedef int repType;const int MAXN=130;bool mat[MAXN][MAXN];int n,m,ans;int done[MAXN][MAXN], notyet[MAXN][MAXN], searched[MAXN][MAXN];void dfs(int n, int dcnt, int ncnt, int scnt){ if(!ncnt && !scnt) ans++; if(ans>1000) return; int key=notyet[n][1]; rep(j,1,ncnt) { int v=notyet[n][j], tmp_ncnt=0, tmp_scnt=0; if(mat[key][v]) continue; memcpy(done[n+1],done[n],sizeof(int)*(dcnt+1)); done[n+1][dcnt+1]=v; rep(i,1,ncnt) if(mat[v][notyet[n][i]]) notyet[n+1][++tmp_ncnt]=notyet[n][i]; rep(i,1,scnt) if(mat[v][searched[n][i]]) searched[n+1][++tmp_scnt]=searched[n][i]; dfs(n+1, dcnt+1, tmp_ncnt, tmp_scnt); notyet[n][j]=0; searched[n][++scnt]=v; }}int main(){ while(cin>>n>>m) { ZERO(mat); ans=0; rep(i,1,m) { int x,y; cin>>x>>y; mat[x][y]=mat[y][x]=true; } rep(i,1,n) notyet[1][i]=i; dfs(1,0,n,0); if(ans>1000) cout<<"Too many maximal sets of friends."<

转载于:https://www.cnblogs.com/samhx/p/POJ-2989.html

你可能感兴趣的文章
网络丢包分析
查看>>
打印LIS
查看>>
剑指offer第2章学习(2)
查看>>
java后台验证码的生成
查看>>
Bootstrap辅助类
查看>>
vue项目的骨架及常用组件介绍
查看>>
Spring使用外部的配置文件
查看>>
ctype
查看>>
jsp 修饰 Request 及Response
查看>>
HDU 2389 Rain on your Parade / HUST 1164 4 Rain on your Parade(二分图的最大匹配)
查看>>
对象的类型转换P109
查看>>
sqlite 查询表和字段是否存在
查看>>
http => https 升级
查看>>
Window 分布式学习-好文收藏
查看>>
Android TextUtils类介绍
查看>>
linux echo设置颜色
查看>>
英文参考文献标准格式:论文参考文献格式规范(转载)
查看>>
css div框加小箭头
查看>>
Eclipse快捷键与使用技巧总结
查看>>
Solr4.8.0源码分析(16)之SolrCloud索引深入(3)
查看>>