Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
52919 AK2022071320 树上排序 C++ 运行超时 0 4000 MS 25636 KB 1204 2022-07-20 12:11:02

Tests(0/10):


#include <bits/stdc++.h> using namespace std; long long a[500010];//i= long long ans=0; int u; long long v,b; long long tcmp[500010]; bool bfvis[500010]; long long head[500010]; long long nxt[500010]; long long adj[500010]; long long tot; const long long mod=1000000007;//ans void dfs(int ab,int root,int cnt) { if (ab==root) { memset(tcmp,0,sizeof(tcmp)); tcmp[1]=a[root]; } if (ab>root) { sort(tcmp+1, tcmp+cnt+1);//, for (int i=1; i<=cnt; i++) { ans+=i*tcmp[i]; ans=ans%mod; } } bfvis[ab]=1; //x for (int i=head[ab]; i; i=nxt[i])//x { if (!bfvis[adj[i]]) { tcmp[cnt+1]=a[adj[i]]; bfvis[adj[i]]=1;////2 dfs(adj[i],root,cnt+1); } }// // bfvis[ab]=0;//x } void ins(int s, int b) //`e { adj[++tot]=b; nxt[tot]=head[s]; head[s]=tot; } int main() { long long n; cin>>n; for (int i=1; i<=n; i++) { cin>>a[i]; ans+=a[i]; ans=ans%mod;//s } for (int i=2; i<=n; i++) { cin>>u>>v; ins(u,v); ins(v,u); } for (int i=1; i<=n; i++) { dfs(i,i,1);//; } cout<<ans<<endl;; return 0; } //


测评信息: