传递闭包模板 for (int k = 1; k <= n; k++) for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) { g[i][j] = g[i][j] | (g[i][k] & g[k][j]); } 请特别注意,对 k k k的循环位于三重循环的最外侧g[i][j] = g[i][j] | (g[i][k] & g[k][j]);注意这里的与或关系