Submission #689363

#TimeUsernameProblemLanguageResultExecution timeMemory
689363ToroTNDuathlon (APIO18_duathlon)C++14
0 / 100
109 ms27956 KiB
#include<bits/stdc++.h> using namespace std; #define pb push_back #define ll long long ll n,m,u_i,v_i,dis[100005],low[100005],cnt,bcc,ans=0,num,sz[200005]; vector<ll> v[100005],g[200005]; stack<ll> stk; void dfs(ll u,ll p) { dis[u]=low[u]=++cnt; ++num; stk.push(u); for(auto node:v[u]) { if(node==p)continue; if(dis[node]!=0) { low[u]=min(low[u],dis[node]); }else { dfs(node,u); low[u]=min(low[u],low[node]); if(dis[u]<=low[node]) { ++bcc; //printf("node=%d\n",node); g[u].pb(n+bcc); while(!g[n+bcc].size()||g[n+bcc].back()!=node) { g[n+bcc].pb(stk.top()); stk.pop(); } } } } } void dfs2(ll u) { sz[u]=(u<=n); for(auto node:g[u]) { dfs2(node); sz[u]+=sz[node]; if(u>n)ans-=(ll)g[u].size()*sz[node]*(sz[node]-1); } if(u>n)ans-=(ll)g[u].size()*(n-sz[u])*(n-sz[u]-1); } int main() { scanf("%lld%lld",&n,&m); for(int i=1;i<=m;i++) { scanf("%lld%lld",&u_i,&v_i); v[u_i].pb(v_i); v[v_i].pb(u_i); } for(int i=1;i<=n;i++) { if(dis[i]==0) { num=0; dfs(i,0); ans+=num*(num-1)*(num-2); dfs2(i); } } /*for(int i=1;i<=6;i++) { printf("i=%d\n",i); for(auto node:g[i]) { printf("%lld ",node); } printf("\n"); } for(int i=1;i<=6;i++) { printf("%lld ",sz[i]); } printf("\n");*/ printf("%lld\n",ans); }

Compilation message (stderr)

count_triplets.cpp: In function 'int main()':
count_triplets.cpp:50:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   50 |     scanf("%lld%lld",&n,&m);
      |     ~~~~~^~~~~~~~~~~~~~~~~~
count_triplets.cpp:53:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   53 |         scanf("%lld%lld",&u_i,&v_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...