10501 2024. 04. 03 15:52:19 111 A Day in Olbia cpp17 Elfogadva 100/100 2.128s 229068 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N;
	cin>>N;
	vector<vector<int>>g(N);
	for(int i=0;i<N-1;i++){
		int a,b;
		cin>>a>>b;
		g[a].push_back(b);
		g[b].push_back(a);
	}
	int ans=0;
	auto dfs=[&](auto self,int i,int p,int d)->map<pair<int,int>,int>{
		map<pair<int,int>,int>s;
		for(int m=1;i*m<=N&&m<=N;m++){
			s[{m,i*m-d}]++;
		}
		for(int j:g[i]){
			if(j==p){
				continue;
			}
			auto z=self(self,j,i,d+1);
			if(s.size()<z.size()){
				swap(s,z);
			}
			for(auto[mx,y]:z){
				auto[m,x]=mx;
				auto t=s.find({m,-x-d*2});
				if(t!=s.end()){
					ans+=t->second*y;
				}
			}
			for(auto[mx,y]:z){
				s[mx]+=y;
			}
		}
		return s;
	};
	dfs(dfs,0,-1,0);
	cout<<ans<<'\n';
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1828 KiB
2 Elfogadva 3ms 2056 KiB
subtask2 16/16
3 Elfogadva 3ms 2464 KiB
4 Elfogadva 3ms 2740 KiB
5 Elfogadva 3ms 2920 KiB
6 Elfogadva 3ms 3148 KiB
subtask3 16/16
7 Elfogadva 8ms 4292 KiB
8 Elfogadva 8ms 4072 KiB
9 Elfogadva 6ms 4820 KiB
10 Elfogadva 6ms 4640 KiB
11 Elfogadva 6ms 4776 KiB
12 Elfogadva 6ms 4868 KiB
13 Elfogadva 7ms 5112 KiB
14 Elfogadva 6ms 5056 KiB
15 Elfogadva 6ms 5392 KiB
subtask4 16/16
16 Elfogadva 1.725s 183272 KiB
17 Elfogadva 1.764s 181260 KiB
subtask5 52/52
18 Elfogadva 2.115s 185500 KiB
19 Elfogadva 2.128s 201352 KiB
20 Elfogadva 1.223s 223016 KiB
21 Elfogadva 1.213s 208328 KiB
22 Elfogadva 1.217s 214644 KiB
23 Elfogadva 1.195s 210484 KiB
24 Elfogadva 1.192s 218408 KiB
25 Elfogadva 1.251s 229068 KiB
26 Elfogadva 1.231s 226204 KiB
27 Elfogadva 1.052s 224148 KiB
28 Elfogadva 982ms 223592 KiB
29 Elfogadva 931ms 223912 KiB
30 Elfogadva 1.078s 225024 KiB
31 Elfogadva 1.088s 227820 KiB