105012024-04-03 15:52:19111A Day in Olbiacpp17Elfogadva 100/1002.128s229068 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1828 KiB
2Elfogadva3ms2056 KiB
subtask216/16
3Elfogadva3ms2464 KiB
4Elfogadva3ms2740 KiB
5Elfogadva3ms2920 KiB
6Elfogadva3ms3148 KiB
subtask316/16
7Elfogadva8ms4292 KiB
8Elfogadva8ms4072 KiB
9Elfogadva6ms4820 KiB
10Elfogadva6ms4640 KiB
11Elfogadva6ms4776 KiB
12Elfogadva6ms4868 KiB
13Elfogadva7ms5112 KiB
14Elfogadva6ms5056 KiB
15Elfogadva6ms5392 KiB
subtask416/16
16Elfogadva1.725s183272 KiB
17Elfogadva1.764s181260 KiB
subtask552/52
18Elfogadva2.115s185500 KiB
19Elfogadva2.128s201352 KiB
20Elfogadva1.223s223016 KiB
21Elfogadva1.213s208328 KiB
22Elfogadva1.217s214644 KiB
23Elfogadva1.195s210484 KiB
24Elfogadva1.192s218408 KiB
25Elfogadva1.251s229068 KiB
26Elfogadva1.231s226204 KiB
27Elfogadva1.052s224148 KiB
28Elfogadva982ms223592 KiB
29Elfogadva931ms223912 KiB
30Elfogadva1.078s225024 KiB
31Elfogadva1.088s227820 KiB