求助,MLE 0分
查看原帖
求助,MLE 0分
291509
Cupricion楼主2023/10/3 16:22
#include<bits/stdc++.h>
using namespace std;
#define int long long 
int v[40],ans=INT_MAX,t,m,n;
map<int,int> mp;
int dfs(int x,int u,int k,int te)
{
    if(mp[k])
        mp[k]=min(mp[k],te);
    else
        mp[k]=te;
    if(mp[k^t]||k==t)
        ans=min(ans,mp[k^t]+te);
    if(x<=u)
    {
        dfs(x+1,u,k,te);
        k=k^v[x];
        dfs(x+1,u,k,te+1);
    }
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int a,b;
        cin>>a>>b;
        v[a]=v[a]^1<<b;
        v[b]=v[b]^1<<a;
    }
    for(int i=1;i<=n;i++)
    {
        t=t^1<<i;
        v[i]=v[i]^1<<i;
    }
    dfs(1,n/2,0,0);
    dfs(n/2+1,n,0,0);
    cout<<ans<<endl;
    return 0;
}
2023/10/3 16:22
加载中...