Submission #67554874


Source Code Expand

//People who believe in miracles are as amazing as miracles themselves.
#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline ll read(){
    ll x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-') f=-f;ch=getchar();}
    while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
    return x*f;
}

const int N=2e5+10,K=80;
int n,num,k,fa[N],dep[N],dis[N*K],vis[N*K];

vector<int> T[N];
vector<pair<int,int>> G[N*K];

inline int id(int x,int i,int t){return n+(x*k+i)*2+t;}

void dfs(int x){
    dep[x]=(dep[fa[x]]+1)%k;
    int p=x;
    for(int i=1;i<=k;++i) p=fa[p];
    if(p){
        G[p].emplace_back(x,1);
        G[x].emplace_back(p,1);
    }
    p=x;
    for(int i=0;i<=k-1;++i){
        if(p){
            G[id(p,dep[x],1)].emplace_back(x,0);
            G[x].emplace_back(id(p,dep[x],0),0);
        }
        p=fa[p];
    }
    if(auto it=find(T[x].begin(),T[x].end(),fa[x]);it!=T[x].end()) T[x].erase(it);
    
    if(T[x].empty()) return;

    for(int j=0;j<k;++j) if(j!=dep[x]){
        int p=((dep[x]+(k-(j-dep[x])))%k+k)%k;
        for(int i=1;i<T[x].size();++i){
            G[id(T[x][i-1],j,0)].emplace_back(num+i,1);
            G[num+i].emplace_back(id(T[x][i],p,1),0);
            if(i+1<T[x].size()) G[num+i].emplace_back(num+i+1,0);
        }
        num+=T[x].size()-1;
    }
    reverse(T[x].begin(),T[x].end());
    for(int j=0;j<k;++j) if(j!=dep[x]){
        int p=((dep[x]+(k-(j-dep[x])))%k+k)%k;
        for(int i=1;i<T[x].size();++i){
            G[id(T[x][i-1],j,0)].emplace_back(num+i,1);
            G[num+i].emplace_back(id(T[x][i],p,1),0);
            if(i+1<T[x].size()) G[num+i].emplace_back(num+i+1,0);
        }
        num+=T[x].size()-1;
    }

    for(int y:T[x]) fa[y]=x,dfs(y);
}

inline void solve(){
    n=read(),k=read(),num=id(n,k-1,1);
    for(int i=1;i<=n;++i) T[i].clear();
    for(int u,v,i=1;i<n;++i){
        u=read(),v=read();
        T[u].emplace_back(v),T[v].emplace_back(u);
    }
    dep[0]=-1,dfs(1);
    deque<int> d;
    for(int i=1;i<=num;++i) dis[i]=-1,vis[i]=0; dis[1]=0,d.emplace_back(1);

    while(!d.empty()){
        int u=d.front(); d.pop_front(); if(vis[u]++) continue;
        for(auto [v,w]:G[u])
            if(dis[v]==-1||dis[v]>dis[u]+w){
                dis[v]=dis[u]+w;
                if(w) d.emplace_back(v); else d.emplace_front(v);
            }
    }

    for(int i=2;i<=n;++i) printf("%d ",dis[i]); puts("");
    while(num) G[num].clear(),--num; 
}

signed main(){
#ifndef ONLINE_JUDGE
    freopen("../1.in","r",stdin);
    freopen("../1.out","w",stdout);
#endif
    for(int T=read();T;--T) solve();
    return 0;
}

Submission Info

Submission Time
Task F - Jump Traveling
User include_BM
Language C++ 20 (gcc 12.2)
Score 525
Code Size 2725 Byte
Status AC
Exec Time 1587 ms
Memory 887484 KiB

Compile Error

Main.cpp: In function ‘void dfs(int)’:
Main.cpp:42:22: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   42 |         for(int i=1;i<T[x].size();++i){
      |                     ~^~~~~~~~~~~~
Main.cpp:45:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   45 |             if(i+1<T[x].size()) G[num+i].emplace_back(num+i+1,0);
      |                ~~~^~~~~~~~~~~~
Main.cpp:52:22: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   52 |         for(int i=1;i<T[x].size();++i){
      |                     ~^~~~~~~~~~~~
Main.cpp:55:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   55 |             if(i+1<T[x].size()) G[num+i].emplace_back(num+i+1,0);
      |                ~~~^~~~~~~~~~~~
Main.cpp: In function ‘void solve()’:
Main.cpp:72:5: warning: this ‘for’ clause does not guard... [-Wmisleading-indentation]
   72 |     for(int i=1;i<=num;++i) dis[i]=-1,vis[i]=0; dis[1]=0,d.emplace_back(1);
      |     ^~~
Main.cpp:72:49: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘for’
   72 |     for(int i=1;i<=num;++i) dis[i]=-1,vis[i]=0; dis[1]=0,d.emplace_back(1);
      |                                                 ^~~
Main.cpp:83:5: warning: this ‘for’ clause does not guard... [-Wmisleading-indentation]
   83 |     for(int i=2;i<=n;++i) printf("%d ",dis[i]); puts("");
      |     ^~~
Main.cpp:83:49: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘for’
   83 |     for(int i=2;i<=n;++i) printf("%d ",dis[i]); puts("");
      |                                                 ^~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 525 / 525
Status
AC × 2
AC × 53
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 02_test_00.txt, 02_test_01.txt, 02_test_02.txt, 02_test_03.txt, 02_test_04.txt, 02_test_05.txt, 02_test_06.txt, 02_test_07.txt, 03_test_00.txt, 03_test_01.txt, 03_test_02.txt, 03_test_03.txt, 03_test_04.txt, 03_test_05.txt, 03_test_06.txt, 03_test_07.txt, 04_test_00.txt, 04_test_01.txt, 04_test_02.txt, 04_test_03.txt, 04_test_04.txt, 05_test_00.txt, 05_test_01.txt, 05_test_02.txt, 05_test_03.txt, 05_test_04.txt, 05_test_05.txt, 05_test_06.txt, 05_test_07.txt, 06_test_00.txt, 06_test_01.txt, 06_test_02.txt, 07_test_00.txt, 07_test_01.txt, 07_test_02.txt, 07_test_03.txt, 07_test_04.txt, 07_test_05.txt, 07_test_06.txt, 07_test_07.txt, 07_test_08.txt, 07_test_09.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 60 ms 3796 KiB
00_sample_01.txt AC 60 ms 3900 KiB
01_test_00.txt AC 90 ms 3700 KiB
01_test_01.txt AC 116 ms 4956 KiB
01_test_02.txt AC 156 ms 15944 KiB
01_test_03.txt AC 280 ms 58592 KiB
01_test_04.txt AC 651 ms 228588 KiB
01_test_05.txt AC 188 ms 50220 KiB
01_test_06.txt AC 261 ms 86552 KiB
01_test_07.txt AC 1240 ms 689832 KiB
01_test_08.txt AC 1292 ms 669976 KiB
02_test_00.txt AC 115 ms 4976 KiB
02_test_01.txt AC 156 ms 16112 KiB
02_test_02.txt AC 252 ms 53244 KiB
02_test_03.txt AC 690 ms 259800 KiB
02_test_04.txt AC 171 ms 51276 KiB
02_test_05.txt AC 254 ms 98216 KiB
02_test_06.txt AC 1242 ms 685012 KiB
02_test_07.txt AC 1289 ms 669356 KiB
03_test_00.txt AC 117 ms 4148 KiB
03_test_01.txt AC 139 ms 7580 KiB
03_test_02.txt AC 215 ms 34424 KiB
03_test_03.txt AC 409 ms 130832 KiB
03_test_04.txt AC 188 ms 63456 KiB
03_test_05.txt AC 237 ms 89192 KiB
03_test_06.txt AC 772 ms 458932 KiB
03_test_07.txt AC 801 ms 443616 KiB
04_test_00.txt AC 797 ms 444944 KiB
04_test_01.txt AC 790 ms 444224 KiB
04_test_02.txt AC 796 ms 449520 KiB
04_test_03.txt AC 805 ms 448436 KiB
04_test_04.txt AC 806 ms 445964 KiB
05_test_00.txt AC 1247 ms 690676 KiB
05_test_01.txt AC 1374 ms 768324 KiB
05_test_02.txt AC 1341 ms 791312 KiB
05_test_03.txt AC 1457 ms 830980 KiB
05_test_04.txt AC 882 ms 676060 KiB
05_test_05.txt AC 965 ms 728160 KiB
05_test_06.txt AC 1037 ms 776068 KiB
05_test_07.txt AC 1069 ms 810176 KiB
06_test_00.txt AC 275 ms 99584 KiB
06_test_01.txt AC 278 ms 100668 KiB
06_test_02.txt AC 323 ms 99748 KiB
07_test_00.txt AC 174 ms 99712 KiB
07_test_01.txt AC 157 ms 80164 KiB
07_test_02.txt AC 225 ms 143324 KiB
07_test_03.txt AC 191 ms 101632 KiB
07_test_04.txt AC 308 ms 143616 KiB
07_test_05.txt AC 1188 ms 843856 KiB
07_test_06.txt AC 597 ms 391972 KiB
07_test_07.txt AC 1587 ms 853804 KiB
07_test_08.txt AC 1235 ms 887484 KiB
07_test_09.txt AC 559 ms 409400 KiB