제출 #120725

#제출 시각아이디문제언어결과실행 시간메모리
120725_demon_철인 이종 경기 (APIO18_duathlon)C++14
23 / 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];
    int comp[100009];
    int mp[1000009];
    int crnt=0;
    void dfs1(int node,int p){
        child[node]=1;
        done[node]=1;
        comp[node]=crnt;
        mp[crnt]++;
        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){
        done[node]=1;
        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]*(mp[comp[node]]-child[u]-1);
            }
            else{
                sum+=(mp[comp[node]]-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);
        }
        for(int i=0;i<n;i++){
            if(done[i]==0){
                dfs1(i,i);
                crnt++;
            }
        }
        memset(done,0,sizeof(done));
        for(int i=0;i<n;i++){
            if(done[i]==0){
              dfs2(i,i);
            }
        }
    /*  for(int i=0;i<n;i++){
            cout<<a[i]<<" ";
        }
    cout<<endl;*/
        cout<<ans<<endl;
    }

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

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