結果

問題 No.2980 Planar Tree 2
ユーザー 👑 testestest
提出日時 2024-11-25 10:18:03
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 265 ms / 2,000 ms
コード長 628 bytes
コンパイル時間 3,472 ms
コンパイル使用メモリ 284,240 KB
実行使用メモリ 24,164 KB
最終ジャッジ日時 2025-06-20 10:23:41
合計ジャッジ時間 9,086 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 31
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>
#include<atcoder/modint>
using namespace std;
using modint=atcoder::modint998244353;

int main(){
	int n;
	cin >> n;
	vector<vector<int>>g(n);

	for(int i=0;i<n-1;i++){
		int x,y;
		cin >> x >> y;
		x--;
		y--;
		g[x].push_back(y);
		g[y].push_back(x);
	}

	vector<int>ko(n);
	auto dfs=[&](auto self,int crr,int pre)->modint{
		modint ans=1;
		ko[crr]=0;
		for(auto nxt:g[crr])if(nxt!=pre){
			ans*=self(self,nxt,crr);
			ans*=ko[nxt]+1;
			ko[crr]++;
			ans*=ko[crr];
		}
		return ans;
	};

	modint ans=dfs(dfs,0,-1);
	modint bunbo=1;
	for(int i=1;i<n;i++)bunbo*=i;
	cout << (ans/bunbo).val() << endl;
}
0