packagetop100.图论;importjava.util.LinkedList;importjava.util.Queue;publicclassTOP{//200. 岛屿数量//网格类问题的 DFS 遍历方法int[][] ways =newint[][]{{-1,0},{1,0},{0,1},{0,-1}};publicintnumIslands(char[][] grid){int m = grid.length, n = grid[0].length;int res =0;for(int i =0; i < m; i++){for(int j =0; j < n; j++){if(grid[i][j]=='1'){res++;dfs(grid, i, j, m, n);}}}return res;}privatevoiddfs(char[][] grid,int i,int j,int m,int n){grid[i][j]='0';for(int[] way : ways){int x = i + way[0], y = j + way[1];if(x >=0&& x < m && y >=0&& y < n && grid[x][y]=='1'){dfs(grid, x, y, m, n);}}}// 994. 腐烂的橘子// BFS遍历图//同时遍历所有的腐烂橘子,类似对k个有序链表排序问题的处理思想,用队列记录当前要处理的结点publicintorangesRotting(int[][] grid){int m = grid.length;int n = grid[0].length;int fresh =0;//统计新鲜的橘子个数Queue<int[]> queue =newLinkedList<>();//记录每轮腐烂的橘子位置for(int i =0; i < m; i++){for(int j =0; j < n; j++){if(grid[i][j]==1){fresh++;}elseif(grid[i][j]==2){queue.add(newint[]{i, j});}}}int[][] ways =newint[][]{{1,0},{-1,0},{0,1},{0,-1}};int res =0;while(fresh >0&&!queue.isEmpty()){//while (fresh > 0)会有死循环,有无法感染到的橘子res++;int k = queue.size();//每轮取出上一轮感染的橘子for(int i =0; i < k; i++){int[] cur = queue.poll();for(int[] way : ways){int x = cur[0]+ way[0];int y = cur[1]+ way[1];//可以感染的新鲜橘子if(x >=0&& x < m && y >=0&& y < n && grid[x][y]==1){fresh--;grid[x][y]=2;//将本轮感染的橘子标记,防止重复遍历queue.add(newint[]{x, y});}}}}//有橘子无法感染if(fresh >0){return-1;}else{return res;}}}
Codeforces Round 910 (Div. 2) 文章目录 Codeforces Round 910 (Div. 2)ABCD A
模拟
#include <bits/stdc.h>using namespace std;
const int N1e510;
char s[N];void solve(){int n , k , cb 0 , ans 0;cin >> n >> k;for(int i 1 ; i < n ; i ){c…
使用pika,一个Python RabbitMQ客户端库,结合Python的datetime和json库来实现定时从RabbitMQ队列中拉取数据,并将数据输出到按当天日期动态生成的文件中。 首先,确保您已经安装了 pika 库。如果尚未安装,可以使用以下命令进行安装&…