提交时间:2024-11-08 11:08:55
运行 ID: 34467
#include<bits/stdc++.h> using namespace std; #define N 1500006 int n,m,c,nn; int ans; int read(){ int res=0; char ch='0'; while (isdigit(ch)) { res<<=1; res|=(ch-'0'); ch=getchar(); } return res; } int dp[N]; void bfs(int x){ queue<int>q; dp[x]=1; q.push(x); while (!q.empty()) { int now=q.front(); q.pop(); for(int i=1;i<nn;i<<=1){ int to=now^i; if(dp[to]>dp[now]+1){ dp[to]=dp[now]+1; q.push(to); } } } } int main(){ cin>>n>>m>>c; nn=1<<m; for(int i=0;i<nn;i++) dp[i]=c; getchar(); int tmp; for(int i=1;i<=n;i++){ tmp=read(); ans+=dp[tmp]; bfs(tmp); } cout<<ans; return 0; }