记录编号 |
574949 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO Mar12] 拖拉机 |
最终得分 |
100 |
用户昵称 |
00000 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.222 s |
提交时间 |
2022-08-30 06:39:39 |
内存使用 |
29.00 MiB |
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,x,y;
int g[2000][2000],m[2000][2000];
queue<pair<int,int>> f;
vector<pair<int,int>> s;
int ans,flag;
int c[5]={0,0,1,0,-1},d[5]={0,-1,0,1,0};
int check(int a,int b)
{
if(a>=0&&b>=0&&a<=1005&&b<=1005) return 1;
return 0;
}
int main(){
freopen("tractor.in","r",stdin);
freopen("tractor.out","w",stdout);
cin>>n>>x>>y;
for(int q=1;q<=n;q++)
{
int a,b;
cin>>a>>b;
g[a][b]++;
}
f.push({x,y});
while(1)
{
while(f.size())
{
int a,b;
a=f.front().first,b=f.front().second;
f.pop();
for(int q=1;q<=4;q++)
{
if(check(a+c[q],b+d[q])&&m[a+c[q]][b+d[q]]==0)
{
m[a+c[q]][b+d[q]]=1;
if(g[a+c[q]][b+d[q]]==0)
{
if(a+c[q]==0&&b+d[q]==0) flag=1;
f.push({a+c[q],b+d[q]});
}else
{
s.push_back({a+c[q],b+d[q]});
}
}
}
if(flag==1) break;
}
if(flag==1) break;
ans++;
for(pair<int,int> q:s)
{
g[q.first][q.second]=0;
f.push({q.first,q.second});
}
s.clear();
}
cout<<ans;
return 0;
}