結果
問題 | No.13 囲みたい! |
ユーザー |
|
提出日時 | 2016-12-03 23:56:27 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,208 bytes |
コンパイル時間 | 1,755 ms |
コンパイル使用メモリ | 173,864 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-27 14:40:31 |
合計ジャッジ時間 | 2,199 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 14 WA * 2 |
ソースコード
#include <bits/stdc++.h>using namespace std;const string msg[] = { "impossible", "possible" };const int dx[] = { 0, 1, 0, -1 };const int dy[] = { 1, 0, -1, 0 };int in_range( int h, int w, int x, int y ){return 0 <= x and x < h and 0 <= y and y < w;}int dfs( const vector< vector< int > > &G, vector< vector< int > > &vis, int x, int y, int px, int py ){vis[ x ][ y ] = 1;for( int di = 0; di < 4; ++di ){int nx = x + dx[ di ];int ny = y + dy[ di ];if( not in_range( G.size(), G[ 0 ].size(), nx, ny ) ) continue;if( G[ nx ][ ny ] != G[ x ][ y ] ) continue;if( nx == px and ny == py ) continue;if( vis[ nx ][ ny ] )return 1;if( dfs( G, vis, nx, ny, x, y ) )return 1;}return 0;}signed main(){int H, W; cin >> H >> W;vector< vector< int > > M( H, vector< int >( W ) );for( int i = 0; i < H; ++i )for( int j = 0; j < W; ++j )cin >> M[ i ][ j ];vector< vector< int > > vis( H, vector< int >( W ) );for( int i = 0; i < H; ++i )for( int j = 0; j < W; ++j ) if( not vis[ i ][ j ] )if( dfs( M, vis, i, j, -1, -1 ) )cout << msg[ 1 ] << endl, exit( 0 );cout << msg[ 0 ] << endl;return 0;}