Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
30785 申东铉 【S】T4 C++ 运行超时 0 2000 MS 14076 KB 1097 2024-07-30 14:39:02

Tests(0/10):


#include <bits/stdc++.h> #define int long long using namespace std; int n,m,cnt; struct edge { int to; int nxt; int w; } e[1919810]; int v[114514],h[114514],x,ans[114514]; void add (int u,int v,int w) { cnt++; e[cnt].to = v; e[cnt].nxt = h[u]; h[u] = cnt; } int dfs (int p) { if (x < 2) { ans[p] = 1; } else { return 0; } v[p] = 1; int r = 1; for (int i = h[p];i;i = e[i].nxt) { if (v[e[i].to]) { continue; } x += e[i].w; r += dfs(e[i].to); x -= e[i].w; } v[p] = 0; return r; } signed main () { scanf("%lld %lld",&n,&m); for (int i = 1;i <= n - 1;i++) { int u,v,w; scanf("%lld %lld %lld",&u,&v,&w); add(u,v,w); add(v,u,w); } for (int i = 1;i <= m;i++) { memset(ans,0,sizeof(ans)); x = 0; int op,k; scanf("%lld %lld",&op,&k); if (op == 1) { e[2 * k].w = e[2 * k].w ^ 1; e[2 * k - 1].w = e[2 * k - 1].w ^ 1; } if (op == 2) { dfs(k); int ANS = 0; for (int i = 1;i <= n;i++) { if (ans[i]) { ANS++; } } printf("%lld\n",ANS); } } return 0; }


测评信息: