0
已解决
测试点#1测评结果 : Wrong Answer时间 : 0ms偷看一下数据测试点#2测评结果 : Accepted时间 : 0ms
测试点#3测评结果 : Accepted时间 : 0ms
测试点#4测评结果 : Accepted时间 : 0ms
测试点#5测评结果 : Accepted时间 : 0ms
我的提交(cpp):
#include<iostream>
#include<queue>
using namespace std;
int map[11][11];
const int dir[4][2]={
{1,0},{0,1},{-1,0},{0,-1}
};
struct node{
int x,y;
};
bool be_out(int x,int y)
{
if(x>10||y>10||x<1||y<1) return 0;
return 1;
}
int bfs()
{
for(int i=1;i<=10;i++)
if(map[10][i]==0)
{
queue<node>k;
k.push((node){10,i});
map[10][i]=1;
while(!k.empty())
{
node f=k.front();
k.pop();
for(int j=0;j<4;j++)
if(be_out(f.x+dir[j][0],f.y+dir[j][1])&&!map[f.x+dir[j][0]][f.y+dir[j][1]])
{
map[f.x+dir[j][0]][f.y+dir[j][1]]=1;
k.push((node){f.x+dir[j][0],f.y+dir[j][1]});
}
}
}else if(map[1][i]==0)
{
queue<node>k;
k.push((node){1,i});
map[1][i]=1;
while(!k.empty())
{
node f=k.front();
k.pop();
for(int j=0;j<4;j++)
if(be_out(f.x+dir[j][0],f.y+dir[j][1])&&!map[f.x+dir[j][0]][f.y+dir[j][1]])
{
map[f.x+dir[j][0]][f.y+dir[j][1]]=1;
k.push((node){f.x+dir[j][0],f.y+dir[j][1]});
}
}
}else if(map[i][10]==0)
{
queue<node>k;
k.push((node){i,10});
map[i][10]=1;
while(!k.empty())
{
node f=k.front();
k.pop();
for(int j=0;j<4;j++)
if(be_out(f.x+dir[j][0],f.y+dir[j][1])&&!map[f.x+dir[j][0]][f.y+dir[j][1]])
{
map[f.x+dir[j][0]][f.y+dir[j][1]]=1;
k.push((node){f.x+dir[j][0],f.y+dir[j][1]});
}
}
}else if(map[i][1]==0)
{
queue<node>k;
k.push((node){i,1});
map[i][1]=1;
while(!k.empty())
{
node f=k.front();
k.pop();
for(int j=0;j<4;j++)
if(be_out(f.x+dir[j][0],f.y+dir[j][1])&&!map[f.x+dir[j][0]][f.y+dir[j][1]])
{
map[f.x+dir[j][0]][f.y+dir[j][1]]=1;
k.push((node){f.x+dir[j][0],f.y+dir[j][1]});
}
}
}
int sum=0;
for(int x=1;x<=10;x++)
for(int y=1;y<=10;y++)
if(!map[x][y])
{
queue<node>k;
k.push((node){x,y});
map[x][y]=1;
sum++;
while(!k.empty())
{
node f=k.front();
k.pop();
for(int j=0;j<4;j++)
if(be_out(f.x+dir[j][0],f.y+dir[j][1])&&!map[f.x+dir[j][0]][f.y+dir[j][1]])
{
sum++;
map[f.x+dir[j][0]][f.y+dir[j][1]]=1;
k.push((node){f.x+dir[j][0],f.y+dir[j][1]});
}
}
}
return sum;
}
int main()
{
for(int i=1;i<=10;i++)
for(int j=1;j<=10;j++)
cin>>map[i][j];
cout<<bfs()<<endl;
return 0;
}
哪错了
80分
