제출 #402282

#제출 시각아이디문제언어결과실행 시간메모리
402282A_D철인 이종 경기 (APIO18_duathlon)C++14
31 / 100
997 ms1048580 KiB
#include <bits/stdc++.h>

#define int long long

using namespace std;
const int N=1e5+100;
vector<int> g[N];
bool vis[N];
bool c[N];
int dep[N];
int sum[N];
int a[N];
int n,ans,nn;
void dfs2(int u,int p)
{
    vis[u]=1;
    for(auto x:g[u])if(c[x])c[u]=1;
    for(auto x:g[u]){
        if(x==p)continue;
        if(vis[x]){
            c[u]=1;
            continue;
        }

        dep[x]=dep[u]+1;
        dfs2(x,u);
        sum[u]+=sum[x];
        a[u]+=a[x];
    }
    sum[u]+=dep[u];
}
void dfs(int u,int p,int ann)
{
    vis[u]=1;
    ans+=ann-(nn);
    //cout<<u<<" "<<ann<<endl;
    ans+=1;
    for(auto x:g[u]){
        if(x==p)continue;
        dfs(x,u,ann+(nn-a[x])-a[x]);
    }
}
void dfs3(int u,int p)
{
    vis[u]=1;
    for(auto x:g[u]){
        if(vis[x])continue;
        dfs3(x,u);
    }
}
void solve()
{
    int m,ann=0;
    cin>>n>>m;
    //if(m>n-1)assert(0);
    for(int i=1;i<=n;i++)a[i]=1;
    while(m--){
        int a,b;
        cin>>a>>b;
        g[a].push_back(b);
        g[b].push_back(a);
    }
    for(int i=1;i<=n;i++){
        if(!vis[i]){
            dfs2(i,i);
        }
    }
    memset(vis,0,sizeof(vis));
    for(int i=1;i<=n;i++){
        if(!vis[i]){
            nn=a[i];
            if(c[i]){
                ans+=nn*(nn-1)*(nn-2);
                dfs3(i,i);
                continue;
            }
//            cout<<nn<<" "<<sum[i]<<endl;
            dfs(i,i,sum[i]);
        }
    }
    cout<<ans<<endl;
}

main()
{
    int t=1;
//    cin>>t;
    while(t--)solve();
}

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

count_triplets.cpp: In function 'void solve()':
count_triplets.cpp:53:11: warning: unused variable 'ann' [-Wunused-variable]
   53 |     int m,ann=0;
      |           ^~~
count_triplets.cpp: At global scope:
count_triplets.cpp:84:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   84 | main()
      | ^~~~
#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...