Submission #44073550
Source Code Expand
//Somos insignificantes. Por mais que você programe sua vida, a qualquer momento tudo pode mudar.
// If you have God on your side,everything becomes clear
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
typedef tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
//To convert it into pairs use pair<int,int> instead of int and also make less_equal<pair<int,int>>
template <typename T>
using ordered_multiset = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;
// To use ordered use ordered_multiset<type>S something like this
// n >>(k+1) << (k) + n%(1<<k+1)-1<<k;
#define ar array
#define ll long long
#define ld long double
#define sza(x) ((ll)x.size())
#define all(a) (a).begin(), (a).end()
const int MAX_N = 1e5 + 5;
const int MAX_L = 20; // ~ Log N
const long long MOD = 1e9 + 7;
const long long INF = 1e9 + 7;
typedef vector<int> vi;
typedef pair<int,int> ii;
typedef vector<ii> vii;
typedef vector<vi> vvi;
#define endl '\n';
#define fi first
#define popcount(x) __builtin_popcountll(x)
#define se second
#define LSOne(S) (S & (-S))
#define isBitSet(S, i) ((S >> i) & 1)
/*vector<int> primes, is_prime, spf;
void sieve(int n) {
primes.clear();
is_prime.assign(n + 1, 1);
spf.assign(n + 1, 0);
is_prime[0] = is_prime[1] = false;
for(ll i=2;i<=n;i+=2){
spf[i]=2;
if(i!=2)is_prime[i]=false;
}
for (ll i = 3; i*i <= n; i++) {
if (is_prime[i]) {
primes.push_back(i);
spf[i] = i;
for (ll j = i * i; j <= n; j += i) {
is_prime[j] = false;
spf[j] = i;
}
}
}
}
*/
/* struct cmp{
bool operator()(const pair<int,int>& v1,const pair<int,int>& v2) const{
}};*/
long long binpow(long long a, long long b) {
a %=MOD;
long long res = 1;
while (b > 0) {
if (b & 1)
res = res * a % MOD;
a = a * a % MOD;
b >>= 1;
}
res=res%MOD;
return res;
}
ll n;
vector<vector<ll>>g;
vector<ll>sz;
ll ans=0;
void dfs(ll u,ll p){
sz[u]=1;
for(auto & x:g[u]){
if(x==p)continue;
dfs(x,u);
sz[u]+=sz[x];
}
}
void dfs2(ll u,ll p){
ll rem = n-sz[u];
ans+=rem*(sz[u]-1);
ll pp=0;
for(auto & x:g[u]){
if(x==p)continue;
pp+=sz[x];
}
for(auto & x:g[u]){
if(x==p)continue;
pp-=sz[x];
ans+=sz[x]*pp;
dfs2(x,u);
}
}
void solve() {
cin>>n;
g.resize(n+1);
sz.resize(n+1);
for(ll i=0;i<n-1;i++){
ll a,b;
cin>>a>>b;
g[a].push_back(b);
g[b].push_back(a);
}
dfs(1,0);
dfs2(1,0);
ans=((n*(n-1)*(n-2))/6) - ans;
cout<<ans;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
#ifdef LOCAL
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
int tc=1;// cin >> tc;
for (int t = 1; t <= tc; t++) {
//cout << "Case #" << t << ": ";
solve();
}
}
Submission Info
| Submission Time |
|
| Task |
G - Avoid Straight Line |
| User |
pistadifiorano |
| Language |
C++ (GCC 9.2.1) |
| Score |
550 |
| Code Size |
3440 Byte |
| Status |
AC |
| Exec Time |
127 ms |
| Memory |
22572 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
550 / 550 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
sample00.txt, sample01.txt, sample02.txt |
| All |
sample00.txt, sample01.txt, sample02.txt, testcase00.txt, testcase01.txt, testcase02.txt, testcase03.txt, testcase04.txt, testcase05.txt, testcase06.txt, testcase07.txt, testcase08.txt, testcase09.txt, testcase10.txt, testcase11.txt, testcase12.txt, testcase13.txt, testcase14.txt, testcase15.txt, testcase16.txt, testcase17.txt, testcase18.txt, testcase19.txt, testcase20.txt, testcase21.txt, testcase22.txt, testcase23.txt, testcase24.txt, testcase25.txt, testcase26.txt, testcase27.txt, testcase28.txt, testcase29.txt, testcase30.txt, testcase31.txt, testcase32.txt, testcase33.txt, testcase34.txt, testcase35.txt, testcase36.txt |
| Case Name |
Status |
Exec Time |
Memory |
| sample00.txt |
AC |
8 ms |
3556 KiB |
| sample01.txt |
AC |
2 ms |
3440 KiB |
| sample02.txt |
AC |
3 ms |
3556 KiB |
| testcase00.txt |
AC |
2 ms |
3612 KiB |
| testcase01.txt |
AC |
2 ms |
3500 KiB |
| testcase02.txt |
AC |
2 ms |
3608 KiB |
| testcase03.txt |
AC |
73 ms |
15304 KiB |
| testcase04.txt |
AC |
121 ms |
20436 KiB |
| testcase05.txt |
AC |
85 ms |
16352 KiB |
| testcase06.txt |
AC |
121 ms |
22572 KiB |
| testcase07.txt |
AC |
46 ms |
11676 KiB |
| testcase08.txt |
AC |
73 ms |
17272 KiB |
| testcase09.txt |
AC |
55 ms |
13796 KiB |
| testcase10.txt |
AC |
80 ms |
17232 KiB |
| testcase11.txt |
AC |
68 ms |
12344 KiB |
| testcase12.txt |
AC |
118 ms |
17876 KiB |
| testcase13.txt |
AC |
88 ms |
14708 KiB |
| testcase14.txt |
AC |
116 ms |
17824 KiB |
| testcase15.txt |
AC |
62 ms |
12392 KiB |
| testcase16.txt |
AC |
96 ms |
16564 KiB |
| testcase17.txt |
AC |
59 ms |
11268 KiB |
| testcase18.txt |
AC |
109 ms |
16824 KiB |
| testcase19.txt |
AC |
66 ms |
13916 KiB |
| testcase20.txt |
AC |
87 ms |
17340 KiB |
| testcase21.txt |
AC |
46 ms |
11288 KiB |
| testcase22.txt |
AC |
90 ms |
17272 KiB |
| testcase23.txt |
AC |
70 ms |
14240 KiB |
| testcase24.txt |
AC |
127 ms |
21792 KiB |
| testcase25.txt |
AC |
91 ms |
17680 KiB |
| testcase26.txt |
AC |
118 ms |
20264 KiB |
| testcase27.txt |
AC |
80 ms |
14416 KiB |
| testcase28.txt |
AC |
112 ms |
16812 KiB |
| testcase29.txt |
AC |
64 ms |
11596 KiB |
| testcase30.txt |
AC |
122 ms |
16884 KiB |
| testcase31.txt |
AC |
61 ms |
11012 KiB |
| testcase32.txt |
AC |
107 ms |
16776 KiB |
| testcase33.txt |
AC |
105 ms |
16548 KiB |
| testcase34.txt |
AC |
108 ms |
16884 KiB |
| testcase35.txt |
AC |
103 ms |
15740 KiB |
| testcase36.txt |
AC |
105 ms |
16860 KiB |