QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#761242 | #9533. Classical Counting Problem | scallionsong | 55 | 1791ms | 18216kb | C++14 | 4.4kb | 2024-11-18 21:37:51 | 2024-11-18 21:37:52 |
Judging History
answer
bool M1;
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/hash_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define uint unsigned int
#define ll long long
#define ull unsigned long long
#define LL __int128
#define db double
#define LD long double
#define Pii pair<int,int>
#define Pll pair<ll,ll>
#define Pull pair<ull,ull>
#define Pdb pair<db,db>
#define fir first
#define sec second
#define vec vector<int>
#define pb push_back
#define qlr cerr<<"qlr\n"
#define dyh cerr<<"dyh\n"
#define pc(x) __builtin_popcount(x)
#define uni(x,y) uniform_int_distribution<int>(x,y)(rng)
#define unl(x,y) uniform_int_distribution<ll>(x,y)(rng)
#define unr(x,y) uniform_real_distribution<double>(x,y)(rng)
#define F(i,a,b) for(int i=a,i##end=b;i<=i##end;i++)
#define UF(i,a,b) for(int i=a,i##end=b;i>=i##end;i--)
#define look_memory cerr<<'\n'<<abs(&M1-&M2)/1024.0/1024<<'\n'
#define look_time cerr<<'\n'<<clock()*1.0/CLOCKS_PER_SEC<<'\n'
mt19937 rng(time(0)^(*new int));
const int INF=0x3f3f3f3f;
const int Mod=998244353;
template<typename T>
inline void inc(T &a,T b){
if(b<0) b+=Mod;
a+=b;
if(a>=Mod) a-=Mod;
}
template<typename T>
inline void dec(T &a,T b){
if(b<0) b+=Mod;
a-=b;
if(a<0) a+=Mod;
}
template<typename T>
inline void muc(T &a,T b){
a=a*b%Mod;
}
template<typename T>
inline bool chkmin(T &a,T b){
if(a<=b) return false;
a=b;
return true;
}
template<typename T>
inline bool chkmax(T &a,T b){
if(a>=b) return false;
a=b;
return true;
}
int T,n;
uint ans;
uint w1[100010],w2[100010];
vec e[100010];
struct Dsu{
#define N 100000
int fa[N+10];
void init(int n){
F(i,1,n) fa[i]=i;
}
int fd(int x){
return fa[x]==x?x:fa[x]=fd(fa[x]);
}
void merge(int x,int y){
x=fd(x),y=fd(y);
fa[x]=y;
}
#undef N
}dsu;
struct Tree{
#define N 100000
int n,rt;
int fth[N+10],siz[N+10],son[N+10],top[N+10],dfn[N+10];
vec e[N+10];
void dfs1(int u,int fa){
fth[u]=fa;
siz[u]=1;
son[u]=0;
for(auto v:e[u]){
if(v==fa) continue;
dfs1(v,u);
siz[u]+=siz[v];
if(siz[v]>siz[son[u]]) son[u]=v;
}
}
void dfs2(int u,int fa,int topf){
top[u]=topf;
dfn[u]=++dfn[0];
if(son[u]) dfs2(son[u],u,topf);
for(auto v:e[u]){
if(v==fa||v==son[u]) continue;
dfs2(v,u,v);
}
}
void build(){
dfs1(rt,0);
dfs2(rt,0,rt);
dfn[0]=0;
}
vec get_chain(int x){
vec res;
while(x){
res.pb(x);
x=son[x];
}
return res;
}
#undef N
}T1,T2;
void add(int x){
w1[T2.dfn[x]]=1;
while(x){
w2[T2.dfn[x]]++;
x=T2.fth[x];
}
}
void del(int x){
w1[T2.dfn[x]]=0;
while(x){
w2[T2.dfn[x]]--;
x=T2.fth[x];
}
}
void dfs1(int u,int fa){
add(u);
for(auto v:T1.e[u]){
if(v==fa) continue;
dfs1(v,u);
}
}
void dfs2(int u,int fa){
del(u);
for(auto v:T1.e[u]){
if(v==fa) continue;
dfs2(v,u);
}
}
uint query(int x){
uint res=0;
while(x){
res+=x*w1[T2.dfn[x]]*w2[T2.dfn[x]];
x=T2.fth[x];
}
return res;
}
void solve(){
cin>>n;
F(i,1,n) e[i].clear();
F(i,1,n-1){
int x,y;
cin>>x>>y;
e[x].pb(y);
e[y].pb(x);
}
T1.n=n,T1.rt=1;
F(i,1,n) T1.e[i].clear();
dsu.init(n);
UF(i,n,1){
for(auto j:e[i]){
if(j<i) continue;
T1.e[i].pb(dsu.fd(j));
dsu.merge(j,i);
}
}
T2.n=n,T2.rt=n;
F(i,1,n) T2.e[i].clear();
dsu.init(n);
F(i,1,n){
for(auto j:e[i]){
if(j>i) continue;
T2.e[i].pb(dsu.fd(j));
dsu.merge(j,i);
}
}
T1.build();
T2.build();
ans=0;
F(i,1,n){
if(T1.top[i]!=i) continue;
vec V=T1.get_chain(i);
reverse(V.begin(),V.end());
for(auto j:V){
add(j);
for(auto k:T1.e[j]){
if(k!=T1.fth[j]&&k!=T1.son[j]) dfs1(k,j);
}
// cout<<j<<":\n";
// F(k,1,n) cout<<w1[T2.dfn[k]]<<' '<<w2[T2.dfn[i]]<<'\n';
ans+=j*query(j);
}
for(auto j:V){
del(j);
for(auto k:T1.e[j]){
if(k!=T1.fth[j]&&k!=T1.son[j]) dfs2(k,j);
}
}
}
cout<<ans<<'\n';
}
bool M2;
int main(){
// freopen("ex_a4.in","r",stdin);
// freopen("monotone.out","w",stdout);
srand(time(0)^(*new int));
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>T;
while(T--) solve();
look_memory;
look_time;
return 0;
}
/*
1
3
1 3
2 3
6
3
1 2
2 3
3
1 3
2 3
7
2 1
3 1
4 1
5 1
6 5
7 6
6
2 1
3 1
4 1
5 4
6 1
9
2 1
3 2
4 3
5 1
6 4
7 5
8 2
9 3
9
2 1
3 2
4 3
5 4
6 5
7 2
8 3
9 5
*/
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 5
Accepted
Test #1:
score: 5
Accepted
time: 20ms
memory: 14704kb
input:
10000 10 10 2 5 2 7 2 1 7 4 10 6 2 3 7 9 7 8 5 10 6 5 1 6 9 5 4 6 3 1 7 5 2 4 8 4 10 5 10 7 6 1 6 4 1 3 4 5 1 9 1 8 7 10 6 2 8 10 8 7 5 7 9 7 3 5 4 3 2 4 6 8 1 7 10 4 10 10 3 2 3 9 2 1 2 4 2 6 4 5 4 7 4 8 4 10 6 1 3 6 7 6 5 6 9 7 2 5 4 1 10 9 8 6 10 3 5 6 5 1 6 10 3 4 1 7 1 8 1 9 3 2 10 10 9 10 3 9 ...
output:
1592 2672 1502 3164 1869 3983 1215 2628 1548 4137 957 2441 1865 2974 1530 1701 2261 2554 1760 2259 2323 3480 2319 1375 1648 4365 2377 1544 1912 1114 1697 2814 2208 2397 1360 1806 1747 2365 1418 1773 2343 2292 2475 1480 1650 1998 981 1378 1785 1984 3003 989 3453 1656 2008 2302 3492 2682 2393 2994 176...
result:
ok 10000 lines
Subtask #2:
score: 10
Accepted
Test #2:
score: 10
Accepted
time: 24ms
memory: 14208kb
input:
5000 20 20 19 7 20 16 19 2 7 15 16 13 2 11 7 6 2 14 2 12 15 5 14 17 2 4 20 3 6 18 20 10 5 1 16 9 14 8 15 20 7 17 15 7 10 17 13 7 18 10 9 17 6 18 16 18 14 16 1 10 19 17 3 18 2 13 8 19 5 1 11 14 20 8 4 18 12 11 20 20 1 17 1 18 20 3 1 9 18 16 18 10 18 12 18 6 9 5 16 19 18 4 5 11 17 14 18 15 17 7 6 13 7...
output:
20721 38034 34273 22829 17722 27544 46022 45137 16644 27269 28662 25035 26312 21148 14106 28176 17802 35960 12683 53453 11349 31418 12177 38063 13437 15209 40896 36164 24851 27149 33448 35621 21295 18051 15404 16388 23302 23641 22600 18168 15109 26323 22612 53786 26857 17201 29605 13181 18756 16472 ...
result:
ok 5000 lines
Test #3:
score: 10
Accepted
time: 24ms
memory: 14816kb
input:
5000 20 2 5 12 2 20 2 3 20 1 5 10 12 9 20 4 9 11 20 6 20 16 3 8 3 13 8 17 10 14 2 18 17 7 3 19 13 15 11 20 15 6 12 15 17 6 5 17 3 12 18 15 8 18 11 5 13 15 16 17 14 13 9 11 20 5 7 13 1 8 4 1 19 5 10 9 2 3 20 5 15 10 15 3 5 9 15 20 5 6 10 17 20 16 6 11 10 19 17 7 5 4 16 14 17 13 17 12 14 18 13 2 5 8 3...
output:
12838 26475 28287 25843 18772 22056 29113 38525 15746 14068 27472 30414 24262 17868 21848 45416 16243 11822 29882 14933 54527 29300 18796 15975 26275 65954 32332 32468 25904 26481 15872 14722 12571 16132 12703 29222 14381 14446 58713 50838 32213 20501 24381 18175 24763 29058 16690 18122 20539 32235 ...
result:
ok 5000 lines
Subtask #3:
score: 10
Accepted
Test #4:
score: 10
Accepted
time: 27ms
memory: 14168kb
input:
2500 40 29 30 24 29 36 29 7 24 18 36 4 18 21 24 17 21 1 17 14 30 19 24 34 19 12 34 11 30 23 30 16 34 38 14 35 24 27 29 20 34 3 17 22 17 31 21 26 14 5 14 2 20 15 16 39 4 37 38 10 3 25 22 33 29 32 10 13 35 9 18 8 2 6 23 40 34 28 7 40 32 10 33 32 2 32 7 10 22 7 21 10 31 22 40 32 37 32 25 22 16 22 39 10...
output:
810633 404452 117099 243743 296777 474314 650868 172328 309229 117742 243602 365391 470337 224328 611246 135238 282936 391899 241985 241809 365040 159975 153715 361771 436106 282863 365203 134808 384355 137564 271407 537918 241082 212081 412678 461768 430833 460584 236968 256887 457800 439758 244646...
result:
ok 2500 lines
Test #5:
score: 10
Accepted
time: 29ms
memory: 14452kb
input:
1666 60 48 60 14 48 35 48 10 48 28 10 43 60 57 60 12 60 38 12 29 28 22 57 17 22 9 60 16 48 21 43 8 57 52 43 37 8 5 28 27 17 24 5 34 29 49 57 3 27 23 37 53 16 13 12 47 37 6 27 39 43 56 13 36 47 19 9 25 19 2 60 32 9 41 25 7 23 45 23 31 5 44 7 46 8 11 16 42 14 26 13 30 24 18 26 55 8 58 28 54 46 1 26 15...
output:
721013 1066623 1062972 1881033 697159 1529292 773227 791222 1614211 2341895 651702 976430 2375602 741248 1733771 2261741 2252942 4137189 1426473 2388105 670178 896629 2879777 843521 1182424 2832567 4026284 2804238 1501560 508974 1290125 1013982 1845299 1256080 3065089 2015363 2166807 2717402 2216766...
result:
ok 1666 lines
Test #6:
score: 10
Accepted
time: 32ms
memory: 15160kb
input:
1250 80 56 47 60 56 34 56 24 60 19 47 18 34 69 24 64 69 20 64 39 34 42 20 28 60 50 64 33 47 67 24 51 47 62 33 5 34 8 24 31 24 61 5 22 19 79 22 12 5 71 28 77 18 70 67 26 64 75 67 16 60 7 42 49 64 11 42 76 51 73 5 35 49 15 33 65 8 78 47 23 62 44 19 38 22 45 39 37 73 57 12 53 37 36 50 43 51 14 24 21 22...
output:
9825885 3893226 6116875 10086749 5393096 6522315 5920355 7902829 3381069 7569894 11567605 8651236 8257852 8756874 4255356 5362908 2357220 1811999 2132744 7582576 6297893 3149082 6203806 8273964 3567508 3978460 2050230 3292482 4784268 3382210 6900055 4094135 11029041 10556808 5959680 5565869 14793452...
result:
ok 1250 lines
Test #7:
score: 10
Accepted
time: 34ms
memory: 14140kb
input:
1000 100 27 59 62 59 77 62 64 27 29 77 3 64 35 77 58 77 48 29 51 35 31 51 80 29 36 62 17 27 99 59 65 59 78 51 2 36 63 59 45 80 93 77 86 36 30 29 72 36 94 29 40 72 49 65 44 58 1 64 81 51 10 2 43 29 18 43 28 18 12 64 20 12 32 40 56 12 7 17 84 30 24 62 89 51 23 43 11 48 92 27 19 59 41 62 79 64 37 10 97...
output:
31974913 12093412 14105413 3172720 10694179 7923959 6328108 11225351 16726813 7154491 20683709 15448313 6702811 12057927 5646735 11944823 20882833 12781298 6563862 11034477 14478585 15412978 12307953 21275884 6567913 19896453 5099613 19928517 7874152 20318428 33070320 13452965 5982093 6647881 221816...
result:
ok 1000 lines
Subtask #4:
score: 15
Accepted
Test #8:
score: 15
Accepted
time: 41ms
memory: 14340kb
input:
500 200 63 7 145 63 78 145 103 63 163 7 97 163 57 7 186 78 30 145 25 57 56 97 112 25 50 7 162 50 105 112 126 57 32 126 95 105 188 105 124 112 86 186 82 162 143 162 194 95 183 97 101 82 197 82 200 186 96 143 146 124 164 197 54 95 195 57 131 143 130 146 193 112 36 97 16 163 62 193 93 124 121 96 1 96 1...
output:
126443395 98757645 53031961 291855662 249009043 162378675 132960917 162056007 329056810 108103316 299902243 119131433 120999023 298936590 233906403 125093815 164591715 335168622 158851967 154337469 199778607 124138841 154231483 148367087 328821194 199730727 214600421 117839595 69955641 188267743 108...
result:
ok 500 lines
Test #9:
score: 15
Accepted
time: 75ms
memory: 15256kb
input:
200 500 190 329 121 190 31 329 274 121 391 274 50 31 79 121 397 31 27 397 67 391 144 121 23 79 352 31 36 391 304 50 284 391 448 23 104 144 34 352 323 144 17 274 60 27 390 34 313 274 75 27 5 67 223 60 185 79 217 144 68 329 446 185 399 68 156 397 51 68 258 75 473 31 146 75 496 156 181 352 434 79 334 2...
output:
3397794692 2928277062 3103858497 154671595 3801613407 1845716072 3939200980 1428371420 1172721046 1241934548 3733101085 2767233351 511155950 1998255682 1883525235 2008135166 1434460021 159624931 4040758374 2297898704 269887615 3312161125 3867499745 2334161982 4224343114 3903581708 567822306 25585921...
result:
ok 200 lines
Test #10:
score: 15
Accepted
time: 114ms
memory: 15280kb
input:
100 1000 357 35 94 35 80 35 805 80 236 80 165 805 583 357 575 805 743 94 353 357 423 583 773 357 204 94 558 353 788 743 252 805 19 353 868 35 968 743 789 868 214 788 156 19 463 156 427 165 500 788 797 558 721 353 117 789 761 80 169 805 197 80 47 165 119 721 185 500 237 353 247 237 208 805 491 80 432...
output:
2673471398 4292125373 1343868658 3107657120 266520979 1541593572 1446269746 2633422195 1439534990 3141756706 1657394538 1657528872 338270 1137567645 1309145575 4100210508 1176806332 1478905565 3368333919 893489146 838424622 3314572650 444945585 3654020026 2706743444 2411845211 2123694075 3979217896 ...
result:
ok 100 lines
Test #11:
score: 15
Accepted
time: 170ms
memory: 14732kb
input:
50 2000 1827 1711 342 1827 1832 1711 1689 342 504 1827 1642 504 1346 1827 1345 1689 52 1827 852 1711 379 1711 1324 1689 862 504 1400 1324 733 862 458 504 1736 1346 1839 504 1634 379 1104 1346 912 458 235 1345 1088 504 87 504 845 1832 559 1827 1482 733 516 1839 998 852 1696 559 345 1696 863 504 248 9...
output:
917126840 2237073293 2385880511 620308988 1386099808 868143037 173569650 2250120512 3150663775 3344857473 213801405 2245716498 755172521 1616607299 3214196809 3850242099 603018244 551472507 168294444 2108552628 39809209 13283767 508284300 2875978449 3871824467 1246833010 2464374958 1749141591 273785...
result:
ok 50 lines
Test #12:
score: 15
Accepted
time: 169ms
memory: 14824kb
input:
50 2000 184 1524 914 184 977 184 94 914 163 977 1678 1524 12 914 1721 163 1215 914 1766 163 214 1215 1415 94 1840 163 1096 12 1504 1678 1230 1415 1604 1721 1241 1504 1318 1504 420 184 1413 1230 1109 1504 1327 914 1014 1096 1831 184 612 1230 295 1109 1482 1241 483 295 93 1096 1149 1318 800 1413 41 14...
output:
4240371587 2491841356 1212590620 136985608 3063417188 3141849558 2531065808 3783088908 596251808 3050326799 3403744286 412062308 4272672179 1547192568 803786680 857943975 4221588258 1202478330 3831605028 855429272 2339826001 3369634154 1313609172 3457718674 4057316238 362819851 818784121 523000430 3...
result:
ok 50 lines
Subtask #5:
score: 15
Accepted
Test #13:
score: 15
Accepted
time: 257ms
memory: 14904kb
input:
33 3000 1322 1797 2442 1797 626 2442 1979 2442 485 1979 1428 1979 2196 1979 1499 1797 1936 2442 2921 1979 751 1499 2182 2921 979 1499 935 1979 1136 485 1880 1797 1084 2921 349 751 482 349 1009 979 1003 349 2056 482 2959 1136 1288 751 496 2442 1693 935 2045 1499 868 1009 1264 1428 2891 868 1045 1288 ...
output:
3914500827 327554069 391027586 979652421 2494881767 236140220 2346024452 2163053318 3655145076 2743479090 589039971 2540607281 1715902488 1847495962 4188258866 2741527567 1841317327 3081320723 1708279848 3607543506 4065758426 3996971978 1920118810 1867947137 3320884977 2180552284 235816630 355893588...
result:
ok 33 lines
Test #14:
score: 15
Accepted
time: 645ms
memory: 15828kb
input:
10 10000 5445 6636 3767 5445 275 5445 8797 6636 3028 3767 8805 8797 8727 6636 8514 8805 7072 8805 1717 6636 5720 8727 4373 275 4166 4373 5735 7072 3679 8727 842 6636 6414 1717 2275 4373 9827 8797 1886 6414 4320 8797 8179 5720 9346 1886 8524 8727 3692 3028 416 5445 5955 3692 8500 1886 1910 6414 7217 ...
output:
4274793245 254213159 2247270664 2544643228 1082664730 2905589050 467019468 3117700443 4011931349 3001623237
result:
ok 10 lines
Test #15:
score: 15
Accepted
time: 1467ms
memory: 18216kb
input:
3 30000 22314 7310 28209 22314 10736 22314 26950 22314 8494 26950 6511 28209 13135 10736 4239 26950 3690 7310 13592 26950 13573 6511 29782 26950 1390 3690 27910 4239 1600 13592 7959 3690 17707 22314 12396 6511 26367 1390 25184 10736 27747 4239 2155 25184 13259 28209 18865 7959 23083 13135 14593 7959...
output:
3969587518 179731823 2877266544
result:
ok 3 lines
Test #16:
score: 15
Accepted
time: 1791ms
memory: 17936kb
input:
3 30000 7419 12032 23227 7419 15838 23227 717 23227 27008 15838 27878 27008 13791 15838 15226 13791 5878 15838 10339 5878 11462 12032 16562 12032 19043 27878 18113 27878 15923 12032 9100 5878 25572 27008 7018 25572 1528 18113 5920 27878 12801 7419 11086 12032 29576 12032 13632 29576 6892 13791 13092...
output:
2232342596 3113008729 3207634870
result:
ok 3 lines
Test #17:
score: 15
Accepted
time: 1397ms
memory: 17512kb
input:
3 30000 233 25136 21401 233 18248 21401 2683 18248 25299 25136 7330 25299 23069 18248 19970 25299 25665 2683 4059 25665 15457 21401 25891 15457 2277 25891 29249 233 25388 29249 29805 233 136 4059 15868 21401 12359 2683 17993 136 834 15868 17705 25891 15002 25665 859 4059 397 136 21059 12359 16115 15...
output:
1891687691 4286604632 1194968781
result:
ok 3 lines
Subtask #6:
score: 0
Time Limit Exceeded
Test #18:
score: 0
Time Limit Exceeded
input:
1 98303 65520 65521 65521 65519 65519 65522 65522 65517 65517 65518 65518 65516 65516 65523 65523 65513 65513 65514 65514 65512 65512 65515 65515 65510 65510 65511 65511 65509 65509 65524 65524 65505 65505 65506 65506 65504 65504 65507 65507 65502 65502 65503 65503 65501 65501 65508 65508 65498 6549...
output:
result:
Subtask #7:
score: 0
Time Limit Exceeded
Test #22:
score: 0
Time Limit Exceeded
input:
1 100000 16150 88283 9425 88283 87988 88283 52935 88283 69816 88283 51311 88283 6910 9425 59991 87988 54743 6910 19614 52935 22926 69816 91163 88283 17233 19614 64177 19614 92097 91163 57414 9425 96321 6910 17859 54743 59810 69816 66565 17859 9948 96321 84506 59810 3928 64177 63031 54743 6214 87988 ...