2011年8月31日
摘要: #include<iostream> using namespace std; int n,m; const int N=22; char mat[N][N]; int sx,sy; int dx[4]={-1,0,0,1}; int dy[4]={0,1,-1,0}; int ans; bool visit[N][N]; void dfs(int x,int y) { for(int i=0;i<4;i++) { int xx=x+dx[i]; int yy=y+dy[i]; if(xx>=1&&xx<=m&&yy<=n&a 阅读全文
posted @ 2011-08-31 22:56 不是我干的 阅读(119) 评论(0) 推荐(0)
摘要: 其实这题还是不难。精彩的地方在于用位处理来记录公司。这样再用floyd传递闭包时候只需要位运算。很妙。#include<iostream>#include<string>using namespace std;int n;const int N=205;int mat[N][N];void floyd(){for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(mat[i][k]&mat[k][j]){mat[i][j]|=(mat[i][k]&mat[k][j 阅读全文
posted @ 2011-08-31 19:53 不是我干的 阅读(160) 评论(0) 推荐(0)