제출 #855077

#제출 시각아이디문제언어결과실행 시간메모리
855077prof_xTracks in the Snow (BOI13_tracks)C++14
100 / 100
1433 ms96544 KiB
#include<bits/stdc++.h>
using namespace std;
const int dx[4]={-1,0,1,0};
const int dy[4]={0,1,0,-1};
const int MAXN=4000+5;
int  g[MAXN][MAXN];
bool visited[MAXN][MAXN];

void solve()
{
  int h,k;

  cin>>h>>k;


  for(int i =0;i<=h;i++)
  {
    for(int j=0;j<=k;j++)
    {
      visited[i][j]=false;
      
    }
  }
  for(int i=1;i<=h;i++)
  {
    for(int j=1;j<=k;j++)
    {
      char ch;
      cin>>ch;
      
      switch(ch)
      {
        case 'F':g[i][j]=1;break;
        case '.':visited[i][j]=true;break;
        case 'R':g[i][j]=0;break;
        
      }
    }
  }

  queue<pair<int,int>>q[2];
  int ans=0;
  int kiss=0;
  q[0].push({1,1});
  q[0].push({h,k});
  while(!q[kiss].empty())
  {
    while(!q[kiss].empty())
    {
      int x=q[kiss].front().first;
      int y=q[kiss].front().second;
      q[kiss].pop();
      
      if(visited[x][y])continue;
      visited[x][y]=true;
      for(int i=0;i<4;i++)
      {
        int fx=x+dx[i];
        int fy=y+dy[i];
        if(fx<1||fx>h||fy<1||fy>k||visited[fx][fy])continue;
        if(g[x][y]^g[fx][fy])q[1-kiss].push({fx,fy});
        else
        q[kiss].push({fx,fy});      
        
      }
    }
    kiss^=1;
    ans++;
    
  }
  cout<<ans<<endl;
  
}



int main()
{
  int t;
  t=1;
  solve();
  return 0;
  
}

컴파일 시 표준 에러 (stderr) 메시지

tracks.cpp: In function 'int main()':
tracks.cpp:79:7: warning: variable 't' set but not used [-Wunused-but-set-variable]
   79 |   int t;
      |       ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...