#include #include #include #include #include #include #include using namespace std; const int maxn=2505; const int maxc=55; vectore[maxn]; int vis[maxn],pre[maxn]; int map[maxc][maxc]; int dir[12][2]={{-1,-2},{-2,-1},{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2},{-1,0},{0,1},{1,0},{0,-1}}; int find(int u) { int i,j,v; for(i=0;i>map[i][j]; int x,y,ans=0,t; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { t=(i+j)%2; if(map[i][j]==-1)continue; for(k=0;k<12;k++) { if(!(map[i][j]&(1<n||y>m||map[x][y]==-1)continue; if(t)e[(i-1)*m+j].push_back((x-1)*m+y); else e[(x-1)*m+y].push_back((i-1)*m+j); } } } memset(pre,-1,sizeof(pre)); for(i=1;i<=n*m;i++) { memset(vis,0,sizeof(vis)); ans+=find(i); } printf("%d. %d\n",++tt,ans); } return 0; }