比赛 2025.6.2 评测结果 AAAAATTTTT
题目名称 0-1-Tree 最终得分 50
用户昵称 LikableP 运行时间 8.216 s
代码语言 C++ 内存使用 4.62 MiB
提交时间 2025-06-02 11:45:06
显示代码纯文本
#include <cstdio>

const int MAXN = 2e5 + 10;

struct EDGE {
  int v, w, next;
} edge[MAXN << 1];

int head[MAXN], edgeNum;
void AddEdge(int u, int v, int w) {
  edge[++edgeNum].v = v;
  edge[edgeNum].w = w;
  edge[edgeNum].next = head[u];
  head[u] = edgeNum;
}

int ans;
void dfs(int root, int fa, int color) {
  for (int i = head[root]; i; i = edge[i].next) {
    int v = edge[i].v, w = edge[i].w;
    if (v == fa) continue;
    if (color == 0 || (color == 1 && w == 1)) {
      ans++;
      dfs(v, root, w);
    }
  }
}

int n;

int main() {
  freopen("0-1-Tree.in", "r", stdin);
  freopen("0-1-Tree.out", "w", stdout);
  scanf("%d", &n);
  for (int i = 1; i <= n - 1; ++i) {
    int u, v, w;
    scanf("%d %d %d", &u, &v, &w);
    AddEdge(u, v, w);
    AddEdge(v, u, w);
  }
  for (int i = 1; i <= n; ++i) {
    dfs(i, 0, 0);
  }
  printf("%d\n", ans);
  return 0;
}