问题标题: 酷町堂:2076被包围的“0”???80分

0
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分


0
已采纳
江齐悦
江齐悦
高级光能
高级光能
while(scanf("%d",&k)!=EOF){
        memset(p,0,sizeof(p));p[1][1]=k;int i,j,cnt=0;
        for(i=1;i<=10;i++){
           if(i==1) for(j=2;j<=10;j++) 
            scanf("%d",&p[i][j]);
                else for(j=1;j<=10;j++) scanf("%d",&p[i][j]);
        }

这是核心

望采纳

0
我要回答