P1294 高手去散步
P1294 高手去散步 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
思路:
- dfs + 邻接矩阵
- 暴力穷举
public class P1294 {
static int n;
static int[] isVis;
static int[][] edge;
static int sum = 0;
static int max;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
int m = scanner.nextInt();
edge = new int[n + 1][n + 1];
isVis = new int[n + 1];
for (int i = 1; i <= m; i++) {
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
edge[a][b] = c;
edge[b][a] = c;// 无向图
}
for (int i = 1; i <= n; i++) {
isVis[i] = 1;// 对第一行选取的点进行标记
dfs(i);
}
System.out.println(max);
}
private static void dfs(int p) {
max = Math.max(sum, max);// 求举例最大值
for (int i = 1; i <= n; i++) {// 遍历没一列元素
if (isVis[i] == 0 && edge[i][p] > 0) {// 状态符合要求
sum += edge[i][p];
isVis[i] = 1;// 取点,标记
dfs(i);
sum -= edge[i][p];// 回溯
}
}
isVis[p] = 0;// 清除标志位,也属于回溯
}
}