Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
29334 M0yunAllgor1thm 【BJ】T2 C++ 运行出错 40 50 MS 131332 KB 2365 2024-05-06 17:03:05

Tests(4/10):


#include <bits/stdc++.h> #define PII pair<int,int> #define LL long long using namespace std; const int MOD=1e9+7; struct Moyun { int x,y; }a[105],b[105],c[105]; int N,M,A,B; int d[105]; char s[15][15]; bool okx[15],oky[15]; bool flag=0; bool vis[105],mark[105]; bool no=0; int fac[105],del[105]; int C=0,siz=0; vector<int>G[105]; void Check(int u,int fa) { int S=0; mark[u]=1,siz++; if(no) return; for(int v:G[u]) { if(v==fa) continue; Check(v,u); if(!del[v]) S++; } if(S==0||S==2) return; if(S==1) { del[u]==1; return; } no=1; return; } void dfs1(int p,int lim) { if(flag) return; if(p==lim) { C=0; for(int i=1;i<=A;i++) c[i]=a[i]; for(int i=1;i<=N+M;i++) G[i].clear(),del[i]=1; C=A+lim; for(int i=1;i<=C;i++) G[c[i].x].push_back(c[i].y+N),G[c[i].y+N].push_back(c[i].x); for(int i=1;i<=N+M;i++) mark[i]=0; //for(int i=1;i<=C;i++) printf("(%d %d)",c[i].x,c[i].y); no=0,siz=1; for(int i=1;i<=N+M;i++) { if(mark[i]) continue; Check(i,-1); if(siz&1) return; siz=1; } if(!no) flag=1; return; } for(int i=1;i<=B;i++) { if(vis[i]) continue; c[A+p+1]=b[i]; vis[i]=1; dfs1(p+1,lim); vis[i]=0; } return; } int main() { //freopen("c.in","r",stdin); //freopen("c.out","w",stdout); scanf("%d %d",&N,&M); for(int i=1;i<=N;i++) { scanf("%s",s[i]+1); for(int j=1;j<=M;j++) { if(s[i][j]=='#') okx[i]=oky[j]=1,a[++A]={i,j}; } } for(int i=1;i<=N;i++) for(int j=1;j<=M;j++) if((okx[i]||oky[j])&&s[i][j]=='.') b[++B]={i,j}; fac[1]=1; for(int i=2;i<=10;i++) fac[i]=fac[i-1]*i; if(N>3&&M==1||M>3&&N==1) // printf("%d %d\n",A,B); { if(A%2==0) puts("0"); else if(A==max(N,M)) puts("-1"); else puts("1"); return 0; } for(int i=0;i<=B;i++) { if(i+A&1) continue; dfs1(0,i); if(flag) { printf("%d\n",i); return 0; } } puts("-1"); return 0; }


测评信息: