爆搜dfs

来源:互联网 发布:淘宝首页在线制作 编辑:程序博客网 时间:2024/06/03 09:15

太久没写搜素,这题很有意思.
注意vector效率很低

/* Farewell. */#include <iostream>#include <vector>#include <cstdio>#include <string.h>#include <algorithm>#include <queue>#include <map>#include <string>#include <cmath>#include <bitset>#include <iomanip>#include <set>using namespace std;#define gcd __gcd#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define MP make_pair#define MT make_tuple#define PB push_backtypedef long long  LL;typedef unsigned long long ULL;typedef pair<int,int > pii;typedef pair<LL,LL> pll;typedef pair<double,double > pdd;typedef pair<double,int > pdi;const int INF = 0x7fffffff;const LL INFF = 0x7f7f7f7fffffffff;const LL MOD = 2147493647;#define debug(x) std::cerr << #x << " = " << (x) << std::endlconst int MAXM = 5e3+17;const int MAXN = 1e2+17;vector<int > G[MAXN];int mp[MAXN][MAXN];int ans = 0,s;void dfs(int u,int *now,int sz){    if(sz==s)    {        ans++;        return;    }    for (int i = 0; i < G[u].size(); ++i)    {        bool can = true;        int v = G[u][i];        for (int j = 1; j <= sz; ++j)            if(!mp[v][now[j]])            {                can = false;                break;            }        if(can)        {            sz++;            now[sz] = v;            dfs(v,now,sz);            now[sz] = 0;            sz--;        }    }}    int main(int argc, char const *argv[]){        #ifdef GoodbyeMonkeyKing        freopen("in.txt","r",stdin);freopen("out.txt","w",stdout);    #endif    int t;    cin>>t;    while(t--)    {                int n,m;        ans = 0;        scanf("%d%d%d",&n,&m,&s);        for (int i = 1; i <= n; ++i)            G[i].clear();        memset(mp, 0, sizeof(mp));        for (int i = 0; i < m; ++i)        {            int u,v;            scanf("%d%d",&u,&v);            if(u>v) swap(u,v);            mp[u][v]=mp[v][u] = 1;            G[u].push_back(v);        }        for (int i = 1; i <= n; ++i)        {            int temp[MAXN]={0};            temp[1] = i;            dfs(i,temp,1);        }        printf("%d\n",ans );    }    return 0;    }
原创粉丝点击