zoukankan      html  css  js  c++  java
  • codeforce 906 SOL (C)

    我们发现N很小,那么我们可以爆搜每个人取或不取,最后统计答案。

    #include<bits/stdc++.h>
    #define eho(x) for(int i=head[x];i;i=net[i])
    #define N 27
    #define M 4007
    using namespace std;
    int anw,ans[N],now,nows[N],siz,n,m;
    int f[N][N],fall[M],net[M],head[N],tot,a,b;
    #define sight(c) ('0'<=c&&c<='9')
    inline void read(int &x){
        static char c;
        for (c=getchar();!sight(c);c=getchar());
        for (x=0;sight(c);c=getchar())x=x*10+c-48;
    }
    void write(int x){if (x<10) {putchar('0'+x); return;} write(x/10); putchar('0'+x%10);}
    inline void writeln(int x){ if (x<0) putchar('-'),x*=-1; write(x); putchar('
    '); }
    inline void writel(int x){ if (x<0) putchar('-'),x*=-1; write(x); putchar(' '); }
    void dfs(int x){
        if (now>=anw) return;
        if (n==x) {
            for (int i=0;i<n;i++) 
             if (f[n][i]^siz) return;
            memcpy(ans,nows,sizeof nows);
            anw=now; return;
        }
        memcpy(f[x+1],f[x],sizeof f[x]);
        dfs(x+1);
        for (int i=0;i<n;i++)
         if(f[x][x]&(1<<(i)))
           f[x+1][i]|=f[x][x]; 
        nows[++now]=x+1; dfs(x+1); now--;
    }
    int main () {
        freopen("c.in","r",stdin);
        read(n); read(m);
        for (int i=0;i<n;i++)ans[i]=i+1,f[0][i]|=1<<i;anw=n;
        siz=1<<n; siz--;
        while (m--) {
            read(a); read(b);
            f[0][a-1]|=1<<b-1;f[0][b-1]|=1<<a-1;
        }
        dfs(0);
        writeln(anw);
        for (int i=1;i<=anw;i++)
        writel(ans[i]);return 0;
    }
  • 相关阅读:
    移动端字体单位
    我像素的理解
    了解viewport概念
    移动端知识
    本地存储和会话存储
    一屏滚动滚轮事件
    关于jquery的笔记
    关于bind()方法
    [css] 滚动条样式问题
    [element-ui] 表格功能实现(删除选中)
  • 原文地址:https://www.cnblogs.com/rrsb/p/8298351.html
Copyright © 2011-2022 走看看