Submission #734117

#TimeUsernameProblemLanguageResultExecution timeMemory
734117Username4132Duathlon (APIO18_duathlon)C++14
23 / 100
1098 ms1048576 KiB
#include<iostream>
#include<vector>
using namespace std;
using ll = long long;
#define forn(i, n) for(int i=0; i<(int)n; ++i)
#define PB push_back

const int MAXN=100010;
int n, m, curSz, si[MAXN];
bool vis[MAXN];
ll ans=0;
vector<int> g[MAXN], roots;

void dfs1(int v){
    vis[v]=true;
    for(int to:g[v]) if(!vis[to]) dfs1(to);
}

void dfs2(int v, int p){
    si[v]=1;
    for(int to:g[v]) if(to!=p){
        dfs2(to, v);
        si[v]+=si[to];
    }
}

void dfs3(int v, int p){
    ll sq=0;
    for(int to:g[v]) if(to!=p){
        sq+=((ll)si[to])*si[to];
        dfs3(to, v);
    }
    sq+=((ll)(curSz-si[v]))*(curSz-si[v]);
    sq=((ll)(curSz-1))*(curSz-1) - sq;
    ans+=sq;
}

int main(){
    scanf("%d %d", &n, &m);
    forn(i, m){
        int a, b; scanf("%d %d", &a, &b); --a, --b;
        g[a].PB(b), g[b].PB(a);
    }

    forn(i, n) if(!vis[i]) dfs1(i), roots.PB(i);
    for(auto ro:roots) dfs2(ro, ro);
    for(auto ro:roots){
        curSz = si[ro];
        dfs3(ro, ro);
    }
    printf("%lld\n", ans);
}

Compilation message (stderr)

count_triplets.cpp: In function 'int main()':
count_triplets.cpp:39:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   39 |     scanf("%d %d", &n, &m);
      |     ~~~~~^~~~~~~~~~~~~~~~~
count_triplets.cpp:41:24: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   41 |         int a, b; scanf("%d %d", &a, &b); --a, --b;
      |                   ~~~~~^~~~~~~~~~~~~~~~~
#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...