This commit is contained in:
kkunkka
2025-09-24 14:13:11 +08:00
parent 7fa405d695
commit 3fb75cf088
2 changed files with 76 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
package com.dota.graph._2316;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
public long countPairs(int n, int[][] edges) {
List<Integer>[] g = new ArrayList[n];
Arrays.setAll(g, i -> new ArrayList<>());
for (int[] edge : edges) {
g[edge[0]].add(edge[1]);
g[edge[1]].add(edge[0]);
}
var vis = new boolean[n];
long res = 0;
int sum = 0;
for (int i = 0; i < g.length; i++) {
if (!vis[i]) {
int size = dfs(i, vis, g);
res += (long)size * sum;
sum += size;
}
}
return res;
}
int dfs(int i, boolean[] visited, List<Integer>[] arr) {
visited[i] = true;
int size = 1;
for (Integer integer : arr[i]) {
if (!visited[integer]) {
size += dfs(integer, visited, arr);
}
}
return size;
}
}

View File

@@ -0,0 +1,37 @@
package com.dota.gridGraph._1559;
class Solution {
public boolean containsCycle(char[][] grid) {
int n = grid.length;
int m = grid[0].length;
var book = new int[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (book[i][j] == 0) {
var res = df(i, j, i, j, grid[i][j], book, 0, grid);
if (res) {
return true;
}
}
}
}
return false;
}
boolean df(int i, int j, int x, int y, char c, int[][] book, int step, char[][] chars) {
if (i < 0 || j < 0 || i >= book.length || j >= book[i].length || c != chars[i][j]) {
return false;
}
if (book[i][j] == 0) {
step++;
book[i][j] = step;
return df(i + 1, j, i, j, c, book, step, chars) ||
df(i - 1, j, i, j, c, book, step, chars) ||
df(i, j + 1, i, j, c, book, step, chars) ||
df(i, j - 1, i, j, c, book, step, chars);
}
return book[x][y] - book[i][j] > 2;
}
}