记录编号 |
290023 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO Nov07] 最大的湖 |
最终得分 |
100 |
用户昵称 |
@@@ |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.002 s |
提交时间 |
2016-08-05 18:53:57 |
内存使用 |
0.36 MiB |
显示代码纯文本
#include <fstream>
#include <queue>
// #ifndef max(aa,bb)
// #define max(aa,bb) aa < bb ? aa : bb
// #endif
using namespace std;
ifstream cin("lake.in");
ofstream cout("lake.out");
int n,m,kk;
bool e[101][101];
int book[101][101],newcolor;
int ans;
int t[5][3]={{0,0,0},{0,-1,0},{0,0,1},{0,1,0},{0,0,-1}};
class lake
{
int _x;
int _y;
public:
int x()
{
return _x;
}
int y()
{
return _y;
}
void set_x(int _x_)
{
_x=_x_;
}
void set_y(int _y_)
{
_y=_y_;
}
};
queue<lake> q;
int bfs(int start_x,int start_y)
{
int s=0;
newcolor ++;
lake a;
a.set_x(start_x);
a.set_y(start_y);
q.push(a);
book[start_x][start_y] = newcolor;
s++;
while(!q.empty())
{
lake h = q.front();
q.pop();
for (int k = 1; k <= 4; ++k)
{
lake r;
r.set_x(h.x()+t[k][1]);
r.set_y(h.y()+t[k][2]);
if (r.x()>=1&&r.y()>=1&&r.x()<=n&&r.y()<=m)
{
if (e[r.x()][r.y()] == 1)
{
if (book[r.x()][r.y()] == 0)
{
book[r.x()][r.y()] = newcolor;
q.push(r);
s++;
/* code */
}
/* code */
}
/* code */
}
/* code */
}
}
return s;
}
int cyf()
{
int t1,t2;
cin>>n>>m>>kk;
for (int i = 1; i <= kk; ++i)
{
cin>>t1>>t2;
e[t1][t2] = 1;
/* code */
}
for (int i = 1; i <= n; ++i)
{
for (int j = 1; j <= m; ++j)
{
if (e[i][j] == 1 && book[i][j] == 0)
{
ans=max(ans,bfs(i,j));
/* code */
}
/* code */
}
/* code */
}
cout<<ans<<endl;
// printf("%n\n", &newcolor );
cin.close();
cout.close();
return 0;
}
int CYF=cyf();
int main(int argc, char const *argv[])
{
/* code */
return 0;
}