結果
| 問題 |
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;
}