Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
35537 林芳菲 【J】T2 C++ 通过 100 986 MS 66852 KB 1083 2024-12-11 20:47:12

Tests(20/20):


#include <cstdio> #include <iostream> #include <algorithm> #include <vector> using namespace std; int n, m; int p[1000010]; int f[1000010]; vector<int> g[1000010]; void dfs1(int x) { if (p[x] != -1) f[x] = p[x]; for (int i = 0; i < g[x].size(); i++) { int y = g[x][i]; if (f[y] == 1e9 + 7) dfs1(y); f[x] = min(f[x], f[y]); } } void dfs2(int x, int fa) { if (f[x] != f[fa]) printf("%d ", f[x]); if (g[x].size() == 2) if (f[g[x][0]] != f[x]) swap(g[x][0], g[x][1]); for (int i = 0; i < g[x].size(); i++) { int y = g[x][i]; dfs2(y, x); } } int main() { // freopen("maze.in", "r", stdin); // freopen("maze.out", "w", stdout); scanf("%d %d", &n, &m); for (int i = 1; i <= n; i++) scanf("%d", &p[i]); for (int i = 1; i <= n; i++) { int ch; cin >> ch; f[i] = 1e9 + 7; for (int j = 1; j <= ch; j++) { int y; cin >> y; g[i].push_back(y); } } dfs1(1); dfs2(1, 0); // fclose(stdin); // fclose(stdout); return 0; }


测评信息: