Submission #829644

#TimeUsernameProblemLanguageResultExecution timeMemory
829644tolbiDuathlon (APIO18_duathlon)C++17
23 / 100
1101 ms1048576 KiB
#pragma optimize("Bismillahirrahmanirrahim") //█▀█─█──█──█▀█─█─█ //█▄█─█──█──█▄█─█■█ //█─█─█▄─█▄─█─█─█─█ //Allahuekber //ahmet23 orz... //FatihSultanMehmedHan //YavuzSultanSelimHan //AbdulhamidHan //Sani buyuk Osman Pasa Plevneden cikmam diyor #define author tolbi #include <bits/stdc++.h> using namespace std; #define deci(x) int x;cin>>x; #define decstr(x) string x;cin>>x; #define sortarr(x) sort(x.begin(), x.end()) #define sortrarr(x) sort(x.rbegin(), x.rend()) #define rev(x) reverse(x.begin(), x.end()) #define cinarr(x) for (auto &it : x) cin>>it; #define coutarr(x) for (auto &it : x) cout<<it<<" ";cout<<endl; #define tol(bi) (1LL<<((int)(bi))) #define endl '\n' #define int long long //mt19937 ayahya(chrono::high_resolution_clock().now().time_since_epoch().count()); #ifdef tolbi #include "duathlon.h" #endif int solve(int n, vector<int> u, vector<int> v){ vector<vector<int>> arr(n); for (int i = 0; i < u.size(); ++i) { arr[u[i]].push_back(v[i]); arr[v[i]].push_back(u[i]); } vector<int> subsz(n); int ans = 0; auto f = [&](int node, int lnode, auto f)->void{ subsz[node]=1; for (int i = 0; i < arr[node].size(); i++){ if (arr[node][i]==lnode) continue; f(arr[node][i],node,f); subsz[node]+=subsz[arr[node][i]]; ans+=(n-subsz[arr[node][i]]-1)*subsz[arr[node][i]]; } ans+=(subsz[node]-1)*(n-subsz[node]); }; f(0,-1,f); return ans; } int32_t main(){ int T = 1; int tno = 0; while (T-(tno++)){ deci(n);deci(m); vector<int> par(n); iota(par.begin(), par.end(), 0); function<int(int)> find; find = [&](int node)->int{ if (par[node]==node) return node; return par[node]=find(par[node]); }; vector<pair<int,int>> edges(m); for (int i = 0; i < m; i++){ cin>>edges[i].first>>edges[i].second; edges[i].first--,edges[i].second--; int u = edges[i].first; int v = edges[i].second; u=find(u); v=find(v); par[u]=v; } map<int,int> mp; map<int,vector<int>> u; map<int,vector<int>> v; vector<int> indis(n); for (int i = 0; i < n; i++){ indis[i]=mp[find(i)]++; } for (int i = 0; i < m; i++){ u[find(edges[i].first)].push_back(indis[edges[i].first]); v[find(edges[i].second)].push_back(indis[edges[i].second]); } int ans = 0; for (auto it : mp){ ans+=solve(it.second,u[it.first],v[it.first]); } cout<<ans<<endl; } }

Compilation message (stderr)

count_triplets.cpp:1: warning: ignoring '#pragma optimize ' [-Wunknown-pragmas]
    1 | #pragma optimize("Bismillahirrahmanirrahim")
      | 
count_triplets.cpp: In function 'long long int solve(long long int, std::vector<long long int>, std::vector<long long int>)':
count_triplets.cpp:30:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |     for (int i = 0; i < u.size(); ++i)
      |                     ~~^~~~~~~~~~
count_triplets.cpp: In instantiation of 'solve(long long int, std::vector<long long int>, std::vector<long long int>)::<lambda(long long int, long long int, auto:23)> [with auto:23 = solve(long long int, std::vector<long long int>, std::vector<long long int>)::<lambda(long long int, long long int, auto:23)>]':
count_triplets.cpp:47:13:   required from here
count_triplets.cpp:39:27: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   39 |         for (int i = 0; i < arr[node].size(); i++){
      |                         ~~^~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...