結果
問題 |
No.13 囲みたい!
|
ユーザー |
|
提出日時 | 2025-06-09 14:10:13 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,465 bytes |
コンパイル時間 | 6,662 ms |
コンパイル使用メモリ | 223,588 KB |
実行使用メモリ | 7,848 KB |
最終ジャッジ日時 | 2025-06-09 14:10:22 |
合計ジャッジ時間 | 8,110 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 10 RE * 6 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll = long long; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int W,H; cin>>W>>H; vector<vector<int>> grid(W, vector<int>(H)); for(int i=0;i<H;++i){ for(int j=0;j<W;++j){ cin>>grid[i][j]; } } vector<vector<int>> g(H*W); auto id = [&] (int i, int j){ return i*W+j; }; for(int i=0;i+1<H;++i){ for(int j=0;j<W;++j){ if(grid[i][j]==grid[i+1][j]){ g[id(i,j)].emplace_back(id(i+1,j)); g[id(i+1,j)].emplace_back(id(i,j)); } } } for(int i=0;i<H;++i){ for(int j=0;j+1<W;++j){ if(grid[i][j]==grid[i][j+1]){ g[id(i,j)].emplace_back(id(i,j+1)); g[id(i,j+1)].emplace_back(id(i,j)); } } } vector<bool> vis(H*W); bool found = false; for(int i=0;i<H*W;++i){ if(vis[i]) continue; vis[i]=true; int V=1; int E=0; stack<int> stk; stk.emplace(i); while(!stk.empty()){ auto u = stk.top(); stk.pop(); E+=g[u].size(); for(auto& v: g[u]){ if(vis[v]) continue; vis[v]=true; V+=1; stk.emplace(v); } } E/=2; if(V<=E){ found=true; break; } } cout<<(found?"possible":"impossible")<<endl; return 0; }