Submission #120722

#TimeUsernameProblemLanguageResultExecution timeMemory
120722_demon_Duathlon (APIO18_duathlon)C++14
0 / 100
1148 ms1048576 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m;
ll child[100009];
ll ans;
ll w[100009];
vector<ll>v[100009];
int done[100009];
void dfs1(int node,int p){
    child[node]=1;
  	done[node]=1;
    if(node!=p)w[node]=w[p]+1;
    for(int i=0;i<v[node].size();i++){
        int u=v[node][i];
        if(u==p)continue;
        dfs1(u,node);
        child[node]+=child[u];
    }
}
int a[100009];
void dfs2(int node,int p){
    ll sum=0;
    for(int i=0;i<v[node].size();i++){
        int u=v[node][i];
        if(w[u]>w[node]){
            sum+=child[u]*(n-child[u]-1);
        }
        else{
            sum+=(n-child[node])*(child[node]-1);
        }
    }
    a[node]=sum;
    ans+=sum;
    for(int i=0;i<v[node].size();i++){
        int u=v[node][i];
        if(u==p)continue;
        dfs2(u,node);
    }
}
int main(){
    cin>>n>>m;
    for(int i=0;i<m;i++){
        int a,b;
        cin>>a>>b;
        a--;b--;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    dfs1(0,0);
  	for(int i=0;i<n;i++){
      if(done[i]==0){
        while(1){
          
        }
      }
    }
//  for(int i=0;i<n;i++)cout<<w[i]<<" ";
//  cout<<endl;
    dfs2(0,0);
//  for(int i=0;i<n;i++)cout<<a[i]<<" ";
//  cout<<endl;
    cout<<ans<<endl;
}

Compilation message (stderr)

count_triplets.cpp: In function 'void dfs1(int, int)':
count_triplets.cpp:14:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<v[node].size();i++){
                 ~^~~~~~~~~~~~~~~
count_triplets.cpp: In function 'void dfs2(int, int)':
count_triplets.cpp:24:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<v[node].size();i++){
                 ~^~~~~~~~~~~~~~~
count_triplets.cpp:35:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<v[node].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...