[acwing 308]how many of them题解

2021-01-06 23:29

阅读:574

标签:href   wing   题解   scan   const   i+1   dfs   cpp   a*   

我只放代码你们凑活看吧。。

参考了大佬 @墨染空 的题解

暴力代码

#include
typedef pair pii;
using namespace std;
int n,m,bnum=0;
pii bian[666];

int to[33],nxt[33],first[33],tot=1;
int vis[33];
int del;
inline void add(int x,int y){
	to[++tot]=y,nxt[tot]=first[x],first[x]=tot;
}
void makegraph(int x){
	tot=1;memset(first,-1,sizeof(first));
	for(int i=0;i>i&1){
		int u=bian[i].first,v=bian[i].second;
		add(u,v),add(v,u);
	}
}
inline void dfs(int x){
	vis[x]=1;
	for(int i=first[x];~i;i=nxt[i])if(!vis[to[i]]&&i!=del&&i!=(del^1))dfs(to[i]);
}
inline bool can1(int d){
	del=d;
	memset(vis,0,sizeof(vis));
	dfs(1);
	for(int i=1;i7)return 1;
	if(m>n-1)m=n-1;
	bnum=0;
	for(int i=1;i

\(H_i\) 表示\(i\)个点组成的连通图个数(可以顺手做做poj1737)
\(F_{i,j}\)表示\(i\)个点构成的包含\(j\)条割边的连通图个数
\(G_{i,j,k}\)表示\(i\)个点,\(j\)条割边,分成\(k\)个连通块 的无向图个数。
跟进阶指南上面的思路一样的

正解

#include
using namespace std;
typedef pair pii;
#define forg(i,x) for(int i=first[x];i;i=nxt[i])
#define forl(z,i,x) for(int i=z.first[x],y=z.to[i];i;i=z.nxt[i],y=z.to[i])
#define uu unsigned
#define fi first
#define se second
#define ran() ((unsigned)rand())
#define lam(z,k) [&](const z &a,const z &b){ return k; }
#define od(x) ((x)&1)
#define ev(x) (od(x)^1)

const int mod=1e9+7;
int n,m;
long long H[51],C[51][51],mi[51],F[51][51],G[51][51][51];

inline int Sum(int a,int b){
	return (a+b>=mod)?a+b-mod:a+b;
}
inline int Sub(int a,int b){
	return (a>=b)?a-b:a+mod-b;
}
inline int Mul(int a,int b){
	return (long long)a*b%mod;
}
inline int por(int a,int b){
	int res=1;
	for(;b;b>>=1){
		if(b&1)res=Mul(res,a);
		a=Mul(a,a);
	}
	return res;
}
namespace poj1737 {
	void solve(){
		scanf("%d%d",&n,&m);
		if(m>n-1)m=n-1;
		for(int i=0;i

Tourist果然名不虚传啊!

[acwing 308]how many of them题解

标签:href   wing   题解   scan   const   i+1   dfs   cpp   a*   

原文地址:https://www.cnblogs.com/happyguy/p/13162502.html


评论


亲,登录后才可以留言!