Submission #893419

#TimeUsernameProblemLanguageResultExecution timeMemory
893419vjudge1Meetings 2 (JOI21_meetings2)C++17
4 / 100
23 ms604 KiB
#include <bits/stdc++.h>
#define int long long
#define all(x) x.begin(),x.end()
#define ff first
#define ss second
#define pb push_back
using namespace std;
const int N=1005;
vector <int> g[N];
int d[N][N];
int ans[N];
signed main(){
    int n;
    cin>>n;
    for(int i=0;i<n-1;i++){
        int u,v;
        cin>>u>>v;
        g[u].pb(v);
        g[v].pb(u);
    }
    queue <int> q;
    for(int i=1;i<=n;i++){
        q.push(i);
        d[i][i]=0;
        while(!q.empty()){
            int v=q.front();
            q.pop();
            for(auto to : g[v]){
                if(d[i][to]==0 && to!=i){
                    d[i][to]=d[i][v]+1;
                    q.push(to);
                }
            }
        }
    }
    
    for(int i=0;i<(1<<n);i++){
        vector <int> v;
        for(int j=0;j<n;j++){
            if((i & (1<<j))!=0){
                v.pb(j);
            }
        }
        int mn=1e9,cnt=0;
        for(int i=1;i<=n;i++){
            int sum=0;
            for(auto x : v){
                sum+=d[i][x+1];
            }
            if(sum<mn){
                mn=sum;
                cnt=1;
            }
            else if(sum==mn)cnt++;
        }
        ans[v.size()]=max(ans[v.size()],cnt);
    }
    for(int i=1;i<=n;i++){
        cout<<ans[i]<<"\n";
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...