Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
67877 wzj33300 魔法国度 C++ 解答错误 30 35 MS 10944 KB 1509 2023-01-20 16:54:19

Tests(3/10):


#include <bits/stdc++.h> using namespace std; int read() { int x = 0, w = 1; char c = 0; while (c < '0' || c > '9') { if (c == '-') w = -1; c = getchar(); } while (c >= '0' && c <= '9') { x = (x << 3) + (x << 1) + (c - '0'); c = getchar(); } return x * w; } const int N = 1e5 + 5; typedef long long ll; int n, m; int h[N], nxt[N << 1], to[N << 1]; ll val[N << 1]; int cntEdge; void AddEdge(int u, int v, ll va) { ++cntEdge; nxt[cntEdge] = h[u]; h[u] = cntEdge; to[cntEdge] = v; val[cntEdge] = va; } struct Node { int dep; ll vv; } a[N]; bool cmp(const Node& x, const Node& y) { return x.dep == y.dep ? x.vv < y.vv : x.dep < y.dep; } void dfs(int x, int fa, ll v) { a[x].dep = a[fa].dep + 1; a[x].vv = v; for (int i = h[x]; i; i = nxt[i]) { if (to[i] == fa) continue; dfs(to[i], x, v + val[i]); } } int main() { scanf("%d%d", &n, &m); if (m == n - 1) { for (int i = 1; i < n; i++) { int u, v; ll va; scanf("%d%d%lld", &u, &v, &va); AddEdge(u, v, va); AddEdge(v, u, va); } } dfs(1, 0, 0); sort(a + 1, a + n + 1, cmp); for (int i = 2; i <= n; i++) { if (a[i].dep != a[i - 1].dep) printf("%lld\n", a[i].vv); } for (int i = a[n].dep + 1; i <= n; i++) { printf("INF\n"); } return 0; }


测评信息: