Submission #74540441
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=3000+5;
bool st;
int n;
int a[N][N],f[N];
struct node{int id,num,dep;}x[N];
bool cmp(node a,node b) {
if(a.num!=b.num) return a.num<b.num;
return a.id<b.id;
}
struct edge{int u,v,w;};
vector<edge> g[N];
int fa[N][20],dis[N],dep[N];
inline int lca(int u,int v) {
if(dis[u]<dis[v]) swap(u,v);
if(dis[u]!=dis[v]) {
for(int i=12;i>=0;i--) {
if(dis[fa[u][i]]>=dis[v]) u=fa[u][i];
}
}
if(u==v) return u;
for(int i=12;i>=0;i--) {
if(fa[u][i]!=fa[v][i]) u=fa[u][i],v=fa[v][i];
}return fa[u][0];
}
inline void dfs(int u) {
fa[u][0]=f[u];
for(int i=1;i<=12;i++) fa[u][i]=fa[fa[u][i-1]][i-1];
for(int i=0;i<g[u].size();i++) {
int v=g[u][i].v;
if(v==f[u]) continue;
dep[v]=dep[u]+g[u][i].w;
dfs(v);
}
}
bool ed;
signed main() {
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cerr<<(double)(&st-&ed)/1024/1024<<'\n';
cin>>n;
for(int i=1;i<=n;i++) {
for(int j=i+1;j<=n;j++) {
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++) x[i].id=i,x[i].num=a[1][i];
sort(x+1,x+n+1,cmp);
for(int i=2;i<=n;i++) {
int maxn=-1,maxid=0,u=x[i].id;
for(int j=i-1;j>=1;j--) {
int v=x[j].id;
if(a[1][u]!=a[1][v]+a[min(u,v)][max(u,v)]) continue;
if(dis[v]>maxn) maxn=dis[v],maxid=v;
}
int w=a[min(u,maxid)][max(u,maxid)];
f[u]=maxid,dis[u]=dis[maxid]+1;
g[u].push_back({u,maxid,w});
g[maxid].push_back({maxid,u,w});
}
dfs(1);
for(int i=1;i<=n;i++) {
for(int j=i+1;j<=n;j++) {
int s=lca(i,j);
if(dep[i]+dep[j]-2*dep[s]!=a[i][j]) {
cout<<"No"<<'\n';
return 0;
}
}
}cout<<"Yes\n";
return 0;
}
Submission Info
Submission Time
2026-03-30 14:38:24+0900
Task
E - Tree Distance
User
wallacewan
Language
C++23 (GCC 15.2.0)
Score
475
Code Size
1706 Byte
Status
AC
Exec Time
512 ms
Memory
51284 KiB
Compile Error
./Main.cpp: In function 'void dfs(long long int)':
./Main.cpp:34:22: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<edge>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
34 | for(int i=0;i<g[u].size();i++) {
| ~^~~~~~~~~~~~
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
475 / 475
Status
Set Name
Test Cases
Sample
00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All
00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 02_max_00.txt, 02_max_01.txt, 02_max_02.txt, 02_max_03.txt, 02_max_04.txt, 03_corner_00.txt, 03_corner_01.txt, 03_corner_02.txt
Case Name
Status
Exec Time
Memory
00_sample_00.txt
AC
2 ms
4032 KiB
00_sample_01.txt
AC
1 ms
4028 KiB
00_sample_02.txt
AC
2 ms
3928 KiB
01_random_00.txt
AC
13 ms
9120 KiB
01_random_01.txt
AC
12 ms
9148 KiB
01_random_02.txt
AC
1 ms
3864 KiB
01_random_03.txt
AC
14 ms
8780 KiB
01_random_04.txt
AC
7 ms
6096 KiB
01_random_05.txt
AC
28 ms
11580 KiB
01_random_06.txt
AC
46 ms
11200 KiB
01_random_07.txt
AC
4 ms
5056 KiB
01_random_08.txt
AC
55 ms
11224 KiB
01_random_09.txt
AC
2 ms
4804 KiB
01_random_10.txt
AC
2 ms
4412 KiB
01_random_11.txt
AC
10 ms
6568 KiB
01_random_12.txt
AC
9 ms
5840 KiB
01_random_13.txt
AC
3 ms
4928 KiB
01_random_14.txt
AC
10 ms
6056 KiB
01_random_15.txt
AC
15 ms
7576 KiB
01_random_16.txt
AC
3 ms
4548 KiB
01_random_17.txt
AC
15 ms
8832 KiB
01_random_18.txt
AC
22 ms
7644 KiB
01_random_19.txt
AC
2 ms
4556 KiB
01_random_20.txt
AC
13 ms
6668 KiB
01_random_21.txt
AC
4 ms
4812 KiB
02_max_00.txt
AC
294 ms
51284 KiB
02_max_01.txt
AC
301 ms
50996 KiB
02_max_02.txt
AC
466 ms
50896 KiB
02_max_03.txt
AC
512 ms
50896 KiB
02_max_04.txt
AC
250 ms
50908 KiB
03_corner_00.txt
AC
1 ms
3864 KiB
03_corner_01.txt
AC
1 ms
3920 KiB
03_corner_02.txt
AC
2 ms
3932 KiB