結果
問題 |
No.2946 Puyo
|
ユーザー |
|
提出日時 | 2025-06-12 21:18:34 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 137 ms / 2,000 ms |
コード長 | 2,633 bytes |
コンパイル時間 | 3,857 ms |
コンパイル使用メモリ | 119,344 KB |
実行使用メモリ | 7,844 KB |
最終ジャッジ日時 | 2025-06-12 21:19:00 |
合計ジャッジ時間 | 8,195 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 45 |
ソースコード
#define _USE_MATH_DEFINES #include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> #include <string> #include<math.h> #include<iomanip> #include<stdio.h> #include <stdlib.h> #include<stdio.h> #include <queue> #include<map> #include <fstream> #include <sstream> #include<set> #include<stack> #include<time.h> #include <sys/types.h> #include <tuple> #include <numeric> #include <iterator> typedef long long int ll; //#include<bits/stdc++.h> using namespace std; ll gcd(ll a, ll b) { if (a < b)swap(a, b); if (b == 0)return a; return gcd(b, a % b); } int lcm(int a, int b) { return a * b / gcd(a, b); } int main() { int Q; Q = 1; //cin >> Q; while (Q--) { int n,m; cin >> n >> m; vector<string>p(n); vector<vector<bool>>f(n, vector<bool>(m)); for (int i = 0; i < n; i++)cin >> p[i]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (p[i][j] == '.')continue; char c = p[i][j]; queue<pair<int, int>>s; queue < pair<int, int>>t; s.push({ i ,j }); t.push({ i ,j }); f[i][j] = 1; while (t.size()) { int x = t.front().first; int y = t.front().second; t.pop(); if (x < n - 1 && p[x + 1][y] == c && !f[x + 1][y]) { t.push({ x + 1,y }); s.push({ x + 1,y }); f[x + 1][y] = 1; } if (x >0 && p[x - 1][y] == c && !f[x - 1][y]) { t.push({ x - 1,y }); s.push({ x - 1,y }); f[x - 1][y] = 1; } if (y < m - 1 && p[x ][y+1] == c && !f[x][y+1]) { t.push({ x ,y+1 }); s.push({ x ,y+1 }); f[x][y + 1] = 1; } if (y >0 && p[x][y - 1] == c && !f[x][y - 1]) { t.push({ x ,y - 1 }); s.push({ x ,y - 1 }); f[x][y - 1] = 1; } } if (s.size() > 3) { while (s.size()) { p[s.front().first][s.front().second] = '.'; s.pop(); } } } } for (int i = 0; i < n; i++)cout << p[i] << endl; } return 0; }