結果

問題 No.3206 う し た ウ ニ 木 あ く ん 笑
ユーザー achapi
提出日時 2025-07-18 21:58:19
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 1,173 bytes
コンパイル時間 2,357 ms
コンパイル使用メモリ 206,928 KB
実行使用メモリ 27,836 KB
最終ジャッジ日時 2025-07-18 21:58:40
合計ジャッジ時間 7,035 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 9 WA * 21
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
int dia(vector<vector<int>> G){
	int N = G.size();
	queue<int> q;
	vector<int> d(N, -1);
	d[0] = 0;
	q.push(0);
	while (!q.empty()){
		int v = q.front();
		q.pop();
		for (int i : G[v]){
			if (d[i] == -1){
				d[i] = d[v] + 1;
				q.push(i);
			}
		}
	}
	int k = max_element(d.begin(), d.end()) - d.begin();
	d = vector<int>(N, -1);
	d[k] = 0;
	q.push(k);
	while (!q.empty()){
		int v = q.front();
		q.pop();
		for (int i : G[v]){
			if (d[i] == -1){
				d[i] = d[v] + 1;
				q.push(i);
			}
		}
	}
	return *max_element(d.begin(), d.end());
}
int main(){
	int N;
	cin >> N;
	vector<vector<int>> G(N);
	for (int i = 0; i < N - 1; i++){
		int u, v;
		cin >> u >> v;
		u--;
		v--;
		G[u].push_back(v);
		G[v].push_back(u);
	}
	queue<int> q;
	vector<int> d(N, -1);
	for (int i = 0; i < N; i++){
		if ((int) G[i].size() == 1){
			q.push(i);
			d[i] = 0;
		}
	}
	while (!q.empty()){
		int v = q.front();
		q.pop();
		for (int i : G[v]){
			if (d[i] == -1){
				d[i] = d[v] + 1;
				q.push(i);
			}
		}
	}
	int ans = dia(G) + 1;
	for (int i = 0; i < N; i++){
		ans = max(ans, d[i] * (int) G[i].size() + 1);
	}
	cout << ans << endl;
}
0