Submission #698553

#TimeUsernameProblemLanguageResultExecution timeMemory
698553HanksburgerDuathlon (APIO18_duathlon)C++17
23 / 100
1103 ms1048576 KiB
#include <bits/stdc++.h>
using namespace std;
long long sz[100005], cnt, ans;
vector<long long> adj[100005];
bool visited[100005];
void dfs1(long long u, long long p)
{
    cnt++;
    visited[u]=sz[u]=1;
    for (long long v:adj[u])
    {
        if (v==p)
            continue;
        dfs1(v, u);
        sz[u]+=sz[v];
    }
}
void dfs2(long long u, long long p)
{
    vector<long long> vec;
    vec.push_back(cnt-sz[u]);
    for (long long v:adj[u])
    {
        if (v==p)
            continue;
        dfs2(v, u);
        vec.push_back(sz[v]);
    }
    long long sum1=0, sum2=0;
    for (long long i=0; i<vec.size(); i++)
    {
        sum1+=vec[i];
        sum2+=vec[i]*vec[i];
    }
    ans+=sum1*sum1-sum2;
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    long long n, m;
    cin >> n >> m;
    for (long long i=1; i<=m; i++)
    {
        long long u, v;
        cin >> u >> v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    for (long long i=1; i<=n; i++)
    {
        if (!visited[i])
        {
            cnt=0;
            dfs1(i, 0);
            dfs2(i, 0);
        }
    }
    cout << ans;
}

Compilation message (stderr)

count_triplets.cpp: In function 'void dfs1(long long int, long long int)':
count_triplets.cpp:9:21: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
    9 |     visited[u]=sz[u]=1;
      |                ~~~~~^~
count_triplets.cpp: In function 'void dfs2(long long int, long long int)':
count_triplets.cpp:30:26: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |     for (long long i=0; i<vec.size(); 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...