• poj1979 解题报告


    //
    //  main.cpp
    //  poj1979
    //
    //  Created by 韩雪滢 on 11/28/16.
    //  Copyright © 2016 韩雪滢. All rights reserved.
    //
    
    #include <iostream>
    using namespace std;
    
    class Tile{
    public:
        bool visited;
        int color;
    };
    
    Tile **room;
    int sum;
    int w,h;
    
    int changeX[4] = {0,0,-1,1};//左,右,上,下
    int changeY[4] = {-1,1,0,0};
    
    void dfs(int x,int y){
        
        room[x][y].visited = true;
    
        for(int i=0;i<4;i++){
            int cx = x + changeX[i];
            int cy = y + changeY[i];
            
            if((0 <= cx) &&( cx < w) && (0 <= cy)&& ( cy< h) && !room[cx][cy].visited && (room[cx][cy].color == 0)){
                
                sum++;
                dfs(cx,cy);
            }
        }
    }
    
    int main() {
        int cx=0,cy=0;
        
        while(cin >> h >> w){
            if(w>0 && h>0)
            {
                sum = 1;
               room = new Tile*[w];
                for(int k=0;k<w;k++){
                    room[k] = new Tile[h];
                    for(int m=0;m<h;m++){
                        room[k][m].color = -2;
                        room[k][m].visited = false;
                    }
                }
                
                for(int i=0;i<w;i++)
                {
                    for(int j=0;j<h;j++)
                    {
                        char tile;
                        cin >> tile;
                        if(tile == '.')
                            room[i][j].color = 0;//  black tile
                        if(tile == '#')
                            room[i][j].color = 1;//  white tile
                        if(tile == '@')
                        {
                            room[i][j].color = -1;//  people
                            cx = i;
                            cy = j;
                        }
                    }
                }
                
                dfs(cx,cy);
                cout << sum << endl;
               
            }
            else
                break;
        }
        
        
        return 0;
    }
  • 相关阅读:
    HDU3555:Bomb
    入门OJ:售货员的难题
    Zju1100 Mondriaan
    与图论的邂逅08:树上倍增
    入门OJ:八中生成树2
    Poj2286 The Rotation Game
    P1379 八数码难题
    [SCOI2005]骑士精神
    与图论的邂逅07:K短路
    [Usaco2007 Feb]Cow Party
  • 原文地址:https://www.cnblogs.com/HackHer/p/6111824.html
Copyright © 2020-2023  润新知