提出 #70267476
ソースコード 拡げる
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=5e5+5;
int n,maxn[N][2][2],up[N],upid[N],ans[N],ans2[N];
vector<int> g[N];
void dfs(int u,int last) {
maxn[u][0][0]=u;
for(int i=0;i<g[u].size();i++) {
int v=g[u][i];
if(v==last) continue;
dfs(v,u);
if(maxn[u][0][1]<maxn[v][0][1]+1) {
swap(maxn[u][0][1],maxn[u][1][1]);
swap(maxn[u][0][0],maxn[u][1][0]);
maxn[u][0][1]=maxn[v][0][1]+1;
maxn[u][0][0]=maxn[v][0][0];
}else {
if(maxn[u][1][1]<maxn[v][0][1]+1) {
maxn[u][1][1]=maxn[v][0][1]+1;
maxn[u][1][0]=maxn[v][0][0];
if(maxn[u][0][1]==maxn[u][1][1]) {
if(maxn[u][0][0]<maxn[u][1][0]) swap(maxn[u][0][0],maxn[u][1][0]);
}
}
}
}
}
void dfs2(int u,int last) {
for(int i=0;i<g[u].size();i++) {
int v=g[u][i];
if(v==last) continue;
if(maxn[v][0][0]==maxn[u][0][0]) {
if(maxn[u][1][1]+1>up[u]+1) {upid[v]=maxn[u][1][0],up[v]=maxn[u][1][1]+1;}
else if(maxn[u][1][1]+1==up[u]+1) upid[v]=max(maxn[u][1][0],upid[u]),up[v]=maxn[u][1][1]+1;
else upid[v]=upid[u],up[v]=up[u]+1;
}else {
if(maxn[u][0][1]+1>up[u]+1) {upid[v]=maxn[u][0][0],up[v]=maxn[u][0][1]+1;}
else if(maxn[u][0][1]+1==up[u]+1) upid[v]=max(maxn[u][0][0],upid[u]),up[v]=maxn[u][0][1]+1;
else upid[v]=upid[u],up[v]=up[u]+1;
}
dfs2(v,u);
}
}
signed main() {
cin>>n;
for(int i=1;i<n;i++) {
int u,v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
dfs(1,0);
up[1]=0,upid[1]=1;
dfs2(1,0);
for(int i=1;i<=n;i++) {
if(up[i]>maxn[i][0][1]) cout<<upid[i]<<'\n';
else if(up[i]==maxn[i][0][1]) cout<<max(upid[i],maxn[i][0][0])<<'\n';
else cout<<maxn[i][0][0]<<'\n';
}
return 0;
}
提出情報
コンパイルエラー
Main.cpp: In function ‘void dfs(long long int, long long int)’:
Main.cpp:11:22: warning: comparison of integer expressions of different signedness: ‘long long int’ and ‘std::vector<long long int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
11 | for(int i=0;i<g[u].size();i++) {
| ~^~~~~~~~~~~~
Main.cpp: In function ‘void dfs2(long long int, long long int)’:
Main.cpp:33:22: warning: comparison of integer expressions of different signedness: ‘long long int’ and ‘std::vector<long long int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
33 | for(int i=0;i<g[u].size();i++) {
| ~^~~~~~~~~~~~
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
0 / 475 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00_sample_00.txt, 00_sample_01.txt |
| All |
00_sample_00.txt, 00_sample_01.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, 02_path_00.txt, 02_path_01.txt, 02_path_02.txt, 02_path_03.txt, 03_star_1_00.txt, 03_star_1_01.txt, 03_star_1_02.txt, 04_star_2_00.txt, 04_star_2_01.txt, 04_star_2_02.txt, 04_star_2_03.txt, 04_star_2_04.txt, 05_star_3_00.txt, 05_star_3_01.txt, 05_star_3_02.txt, 06_corner_00.txt, 06_corner_01.txt, 06_corner_02.txt, 06_corner_03.txt, 06_corner_04.txt, 06_corner_05.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_00.txt |
AC |
3 ms |
3580 KiB |
| 00_sample_01.txt |
AC |
3 ms |
3508 KiB |
| 01_random_00.txt |
AC |
189 ms |
35656 KiB |
| 01_random_01.txt |
AC |
350 ms |
57872 KiB |
| 01_random_02.txt |
AC |
224 ms |
43140 KiB |
| 01_random_03.txt |
AC |
351 ms |
57828 KiB |
| 01_random_04.txt |
AC |
271 ms |
44104 KiB |
| 01_random_05.txt |
AC |
342 ms |
57824 KiB |
| 01_random_06.txt |
AC |
332 ms |
56176 KiB |
| 01_random_07.txt |
AC |
343 ms |
57776 KiB |
| 02_path_00.txt |
AC |
267 ms |
101120 KiB |
| 02_path_01.txt |
AC |
416 ms |
90920 KiB |
| 02_path_02.txt |
AC |
417 ms |
85256 KiB |
| 02_path_03.txt |
AC |
404 ms |
100124 KiB |
| 03_star_1_00.txt |
WA |
183 ms |
57936 KiB |
| 03_star_1_01.txt |
AC |
231 ms |
58716 KiB |
| 03_star_1_02.txt |
WA |
280 ms |
58660 KiB |
| 04_star_2_00.txt |
WA |
240 ms |
54216 KiB |
| 04_star_2_01.txt |
WA |
294 ms |
56736 KiB |
| 04_star_2_02.txt |
WA |
356 ms |
54812 KiB |
| 04_star_2_03.txt |
WA |
379 ms |
65696 KiB |
| 04_star_2_04.txt |
AC |
391 ms |
79408 KiB |
| 05_star_3_00.txt |
AC |
354 ms |
54340 KiB |
| 05_star_3_01.txt |
AC |
352 ms |
54796 KiB |
| 05_star_3_02.txt |
AC |
355 ms |
54864 KiB |
| 06_corner_00.txt |
AC |
259 ms |
86080 KiB |
| 06_corner_01.txt |
AC |
261 ms |
86032 KiB |
| 06_corner_02.txt |
AC |
405 ms |
86084 KiB |
| 06_corner_03.txt |
AC |
415 ms |
86096 KiB |
| 06_corner_04.txt |
AC |
415 ms |
83336 KiB |
| 06_corner_05.txt |
AC |
404 ms |
83168 KiB |