社区讨论

样例过不了求条

CF11DA Simple Task参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mkjmqvws
此快照首次捕获于
2026/01/18 19:05
上个月
此快照最后确认于
2026/01/18 19:28
上个月
查看原帖
CPP
//  Gavinzhou's code
#include<bits/stdc++.h>
using namespace std;
//#define LOCAL
#define in freopen("xx.in","r",stdin)
#define out freopen("xx.out","w",stdout)
#define int long long
#define endl '\n'
#define FastIO std::ios::sync_with_stdio(false);cin.tie(0);
#define fi first
#define se second
#define dis(x1,y1,x2,y2) (sqrt(Abs(x1-x2)*Abs(x1-x2)+Abs(y1-y2)*Abs(y1-y2)))
#define lowbit(x) (x&-x)
using PII=pair<int,int>;
/*--------------------定义变量,函数---------------------------*/
const int N=20;
int n,m;
int g[N][N];
int f[(1<<19)][N];
/*-----------------------解决函数--------------------------*/
void solve(){
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        int u,v;
        cin>>u>>v;
        g[v][u]=1;
        g[u][v]=1;
    }
    for(int i=1,wi=1;i<=n;i++,wi<<=1)
        f[wi][i]=1;
    int ans=0;
    for(int i=1;i<(1<<n);i++){
        for(int u=1,wu=1;u<=n;u++,wu<<=1){
            if(!(i&wu)) continue;
            if(g[u].count(__builtin_ctz(lowbit(i))+1)){
                ans+=f[i][u];
            }
            for(int v:g[u]){
                int wv=1<<(v-1);
                if(i&wv) continue;
                f[i|wv][v]+=f[i][u];
            }
        }
    }
    cout<<(ans-m)/2;
}
/*------------------------------------------------------*/
signed main(){
  FastIO
#ifdef LOCAL
    in;
    out;
#endif
  int t;
  t=1;
  while(t--){
    solve();
  }
  return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...