提出 #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;
}

提出情報

提出日時
問題 E - Farthest Vertex
ユーザ wallacewan
言語 C++ 20 (gcc 12.2)
得点 0
コード長 1738 Byte
結果 WA
実行時間 417 ms
メモリ 101120 KiB

コンパイルエラー

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
結果
AC × 2
AC × 25
WA × 6
セット名 テストケース
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