# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
733623 | 2023-05-01T05:15:13 Z | bin9638 | 철인 이종 경기 (APIO18_duathlon) | C++17 | 8 ms | 9684 KB |
#include <bits/stdc++.h> using namespace std; #define N 200010 #define ll long long #define fs first #define sc second #define ii pair<int,int> #define pb push_back int ans=0,times,num[N],low[N],n,m,ktr[N],dem,sz[N],child[N]; vector<int>g[N],edge[N]; stack<int>st; void visit(int u,int p) { num[u]=low[u]=++times; for(auto v:g[u]) if(v!=p) { if(num[v]!=0) { low[u]=min(low[u],num[v]); }else { st.push(u); visit(v,u); low[u]=min(low[u],low[v]); if(low[v]>=num[u]) { int k; dem++; do{ k=st.top(); st.pop(); if(ktr[k]!=dem) { sz[dem]++; ktr[k]=dem; edge[dem].pb(k); edge[k].pb(dem); } }while(k!=u); } } } st.push(u); } void build(int u,int p) { child[u]=(u<=n); //cout<<u<<" "<<child[u]<<endl; for(auto v:edge[u]) if(v!=p) { build(v,u); child[u]+=child[v]; } } void DFS(int u,int p) { if(u<=n) { int sum=n-1; for(auto v:edge[u]) if(v!=p) { sum-=child[v]; ans+=sum*child[v]; // cout<<sum<<" "<<child[v]<<endl; } }else { int sum=n; for(auto v:edge[u]) if(v!=p) { sum-=child[v]; ans+=sum*child[v]*(sz[u]-2); // cout<<u<<" "<<sum<<" "<<child[v]<<" "<<sz[u]<<endl; } } //cout<<u<<" "<<ans*2<<endl; for(auto v:edge[u]) if(v!=p) DFS(v,u); } int32_t main() { freopen("A.inp","r",stdin); freopen("A.out","w",stdout); ios::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); cin>>n>>m; for(int i=1;i<=m;i++) { int u,v; cin>>u>>v; g[u].pb(v); g[v].pb(u); } dem=n; for(int i=1;i<=n;i++) if(num[i]==0) visit(i,0); //cout<<dem<<endl; build(1,0); // cout<<child[1]<<endl; DFS(1,0); cout<<ans*2; return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 6 ms | 9684 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 6 ms | 9684 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 7 ms | 9684 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 6 ms | 9684 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 7 ms | 9684 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 7 ms | 9684 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 8 ms | 9684 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 6 ms | 9684 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 6 ms | 9684 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |