Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
51609 seanlsy 树上博弈 C++ 运行出错 40 46 MS 404 KB 883 2022-07-13 12:14:12

Tests(8/20):


#include <bits/stdc++.h> using namespace std; int n,m,edge[2005],cnt,u,v,w; struct node{ int fa,etf,r; vector<int> son; }a[2005]; inline void find(int u,int v){ while(a[u].r>a[v].r) edge[++cnt]=a[u].etf,u=a[u].fa; while(a[v].r>a[u].r) edge[++cnt]=a[v].etf,v=a[v].fa; while(u^v) edge[++cnt]=a[u].etf,edge[++cnt]=a[v].etf,u=a[u].fa,v=a[v].fa; } int main(){ cin>>n; for(int i=1;i<n;i++) cin>>u>>v>>w,a[v].fa=u,a[v].etf=w,a[u].son.push_back(v),a[v].r=a[u].r+1; cin>>m; while(m--){ cin>>u>>v>>w; find(u,v); sort(edge+1,edge+cnt+1); if((!cnt)||w<edge[1]) printf("%d\n",w); else for(int i=cnt;i;i--){ if(w>=edge[i]){ int num=1; while(i&&edge[i]==edge[i-1]) num++,i--; if(num&1){ printf("%d\n",w-edge[i]); break; } } if(i==1) printf("%d\n",w); } cnt=0; } return 0; }


测评信息: