计蒜客 颜色 dfs + set

网友投稿 836 2022-11-06

计蒜客 颜色 dfs + set

计蒜客 颜色 dfs + set

​​传送门​​ 思路:和求连通块的问题差不多,用set去重。

/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-26-13.00.50* Talk is cheap.Show me your code.*/#include#include#include#include#include#include#include#include#include#include#include#include#include#define ll long longusing namespace std;const ll maxn = 1e6 + 5;const ll minn = 1e9 + 5;const ll mod = 1000000007;const int INF = 0x3f3f3f3f;const long long LIMIT = 4294967295LL;vectorv[maxn];int dp[maxn];vectorG[maxn];bool row[maxn], col[maxn];bool flag = 0;queueq;int n, m;int cnt = 0;sets;ll a[1005][1005];ll vis[1005][1005];void dfs(int x, int y){ if(a[x][y] == 0 || x <= 0 || x > n || y <= 0 || y > m) return ; s.insert(a[x][y]); a[x][y] = 0; dfs(x + 1, y); dfs(x, y + 1); dfs(x, y - 1); dfs(x - 1, y);}int main(){ ios::sync_with_stdio(false); cin >> n >> m; ll maxnn=0; for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) { cin >> a[i][j]; if(a[i][j]) vis[i][j] = 1; } for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) if(vis[i][j]) { dfs(i, j); ll t =s.size(); maxnn = max(maxnn, t); s.clear(); } cout << maxnn << endl; return 0;}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:洛谷 P2142 高精度减法
下一篇:计蒜客入门赛#2 数列 一次前缀和+二分区间(lower_bound)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~