답안 #1033738

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1033738 2024-07-25T04:44:09 Z vjudge1 Bitaro, who Leaps through Time (JOI19_timeleap) C++17
0 / 100
8 ms 12892 KB
#include<bits/stdc++.h>
#define int long long
#define ll pair<int,int>
using namespace std;

const int N=200022;
vector<int> ke[N];
int oo=1e18;
int d[20][20];
int kq[N];
int D[20];

void dfs(int u,int pa,int dist,int dinh)
{
    d[dinh][u]=dist;
    //cout << dinh << " " << u << " " << dist << '\n';
    for (int i=0;i<ke[u].size();i++)
    {
        int v=ke[u][i];
        if (v==pa) continue;
        dfs(v,u,dist+1,dinh);
    }
}

signed main()
{
    // freopen("kk.inp","r",stdin);
    // freopen("kk.out","w",stdout);
    freopen("City.inp","r",stdin);
    freopen("City.out","w",stdout);
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);
    int n;
    cin >> n;
    int kt=0;
    for (int i=1;i<n;i++)
    {
        int u,v;
        cin >> u >> v;
        ke[u].push_back(v);
        ke[v].push_back(u);
        if ((u!=i) or (v!=i+1))
        {
            kt=-1;
        }
    }
    if (kt==0)
    {
        for (int i=1;i<=n;i++)
        {
            if (i%2==1) cout << 1 << '\n';
            else cout << n-(i-2) << '\n';
        }
        return 0;
    }
    for (int i=1;i<=n;i++)
    {
        dfs(i,0,0,i);
    }
    for (int mask=0;mask<(1<<n);mask++)
    {
        for (int i=1;i<=n;i++) D[i]=0;
        int dem=0;
        for (int i=1;i<=n;i++)
        {
            int kk=((mask>>(i-1))&1);
            if (kk) 
            {
                dem++;
                for (int i2=1;i2<=n;i2++)
                {
                    D[i2]+=d[i][i2];
                }
            }
        }
        int minn=oo;
        int cnt=0;
        for (int i=1;i<=n;i++)
        {
            if (minn>D[i])
            {
                minn=D[i];
                cnt=0;
            }
            if (minn==D[i]) cnt++;
        }
        kq[dem]=max(kq[dem],cnt);
        //cout << mask << ' ' << cnt << " " << minn << '\n';
    }
    for (int i=1;i<=n;i++) cout << kq[i] << '\n';
}

Compilation message

timeleap.cpp: In function 'void dfs(long long int, long long int, long long int, long long int)':
timeleap.cpp:17:19: 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]
   17 |     for (int i=0;i<ke[u].size();i++)
      |                  ~^~~~~~~~~~~~~
timeleap.cpp: In function 'int main()':
timeleap.cpp:29:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   29 |     freopen("City.inp","r",stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
timeleap.cpp:30:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |     freopen("City.out","w",stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Runtime error 8 ms 12888 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 7 ms 12892 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 8 ms 12888 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -