제출 #348325

#제출 시각아이디문제언어결과실행 시간메모리
348325denkendoemeer철인 이종 경기 (APIO18_duathlon)C++14
100 / 100
141 ms29164 KiB
#include<bits/stdc++.h> #define ll long long using namespace std; int disc[100005],low[100005],st[100005],u,cnt,tn,n; vector<int>g[100005],g2[200005]; ll sz[200005],n2,ans; void dfs(int nod,int t) { disc[nod]=low[nod]=++tn; st[u++]=nod; ++n2; for(auto it:g[nod]) if (disc[it]==0){ dfs(it,nod); low[nod]=min(low[nod],low[it]); if (low[it]>=disc[nod]){ g2[nod].push_back(cnt+n); while(g2[cnt+n].empty() || g2[cnt+n].back()!=it) g2[cnt+n].push_back(st[--u]); ++cnt; } } else if (it!=t) low[nod]=min(low[nod],disc[it]); } void dfs2(int nod,int t) { if (nod<n) sz[nod]=1; else sz[nod]=0; for(auto it:g2[nod]){ dfs2(it,nod); sz[nod]+=sz[it]; if (nod>=n) if (t==-1) ans=ans-(g2[nod].size()-1)*sz[it]*(sz[it]-1); else ans=ans-g2[nod].size()*sz[it]*(sz[it]-1); } if (nod>=n) ans=ans-g2[nod].size()*(n2-sz[nod])*(n2-sz[nod]-1); } int main() { //freopen(".in","r",stdin); //freopen(".out","w",stdout); int m,x,y,i; scanf("%d%d",&n,&m); for(i=1;i<=m;i++){ scanf("%d%d",&x,&y); x--; y--; g[x].push_back(y); g[y].push_back(x); } for(i=0;i<n;i++){ if (disc[i]) continue; dfs(i,-1); ans=ans+n2*(n2-1)*(n2-2); dfs2(i,-1); n2=0; } printf("%lld\n",ans); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

count_triplets.cpp: In function 'void dfs2(int, int)':
count_triplets.cpp:36:12: warning: suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]
   36 |         if (nod>=n)
      |            ^
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("%d%d",&n,&m);
      |     ~~~~~^~~~~~~~~~~~~~
count_triplets.cpp:52:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   52 |         scanf("%d%d",&x,&y);
      |         ~~~~~^~~~~~~~~~~~~~
#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...