Submission #67544807


Source Code Expand

#include <bits/stdc++.h>
#define pii pair<int,int>
#define fi first
#define se second
#define mk make_pair
#define ll long long
#define ull unsigned long long
#define uint unsigned int
#define bi __int128_t
#define lb(x) ((x)&(-(x)))
#define gp(i,j) (((i)>>(j-1))&1)
#define ppc __builtin_popcount
using namespace std;
const int N=2e5+10,K=22,mod=998244353;
const ll inf=1e18+10;
void Add(int &a,int b){a+=b;if(a>=mod) a-=mod;}
void Sub(int &a,int b){a-=b;if(a<0) a+=mod;}
void Mul(int &a,int b){a=1ll*a*b%mod;}
int qp(int a,int b){
    int x=1;
    while(b){
        if(b&1) Mul(x,a);
        Mul(a,a);b>>=1;
    }return x;
}
int d[N],fa[N],dep[N],dfn[N],siz[N],dc=0;
vector<int> E[N];
set<pii> st[N];
int n,k;
int id(int u,int x){
    return (x-1)*n+u;
}
void dfs(int u,int pa){
    fa[u]=pa;dep[u]=dep[pa]+1;
    dfn[u]=++dc;siz[u]=1;
    for(auto v:E[u]){
        if(v==pa) continue;
        dfs(v,u);siz[u]+=siz[v];
    }
}
queue<int> q;
void upd(int l,int r,int D,int p){
    if(D>n) return ;
    //cout<<l<<' '<<r<<' '<<D<<' '<<p<<endl;
    auto it=st[D].lower_bound(mk(l,0));
    while((*it).fi<=r){
        int id=(*it).se;
        d[id]=d[p]+1;q.push(id);
        st[D].erase(it);
        it=st[D].lower_bound(mk(l,0));
        //cout<<(*it).fi<<endl;
    }//cout<<endl;
}
void slv(){
    cin>>n>>k;
    dc=0;
    for(int i=1;i<=n;i++)
        E[i].clear(),st[i].clear(),d[i]=1e9;
    for(int i=1;i<=n;i++)
        st[i].insert(mk(n+1,0));
    for(int i=1;i<n;i++){
        int u,v;cin>>u>>v;
        E[u].push_back(v);
        E[v].push_back(u);
    }dfs(1,0);
    for(int i=1;i<=n;i++){
        //cout<<i<<' '<<dep[i]<<endl;
        st[dep[i]].insert(mk(dfn[i],i));
    }
    while(!q.empty()) q.pop();
    d[1]=0;q.push(1);
    while(!q.empty()){
        int p=q.front();q.pop();
        int now=p,la=0;
        for(int i=0;i<=k;i++){
            if(!now) break;
            if(!la)
                upd(dfn[now],dfn[now]+siz[now]-1,dep[now]+(k-i),p);
            else
                upd(dfn[now],dfn[la]-1,dep[now]+(k-i),p),
                upd(dfn[la]+siz[la],dfn[now]+siz[now]-1,dep[now]+(k-i),p);
            la=now;now=fa[now];
        }
    }
    for(int i=2;i<=n;i++){
        if(d[i]>=1e9) d[i]=-1;
        cout<<d[i]<<' ';
    }cout<<endl;
}
int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int t=1;cin>>t;
    while(t--) slv();
    cout.flush();
    return 0;
}

Submission Info

Submission Time
Task F - Jump Traveling
User LYLAKIOIAKIOI
Language C++ 20 (gcc 12.2)
Score 525
Code Size 2500 Byte
Status AC
Exec Time 207 ms
Memory 55044 KiB

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 6 ms 12800 KiB
00_sample_01.txt AC 5 ms 12796 KiB
01_test_00.txt AC 80 ms 12884 KiB
01_test_01.txt AC 54 ms 12940 KiB
01_test_02.txt AC 66 ms 13032 KiB
01_test_03.txt AC 93 ms 14744 KiB
01_test_04.txt AC 126 ms 26020 KiB
01_test_05.txt AC 156 ms 46740 KiB
01_test_06.txt AC 147 ms 46696 KiB
01_test_07.txt AC 166 ms 46912 KiB
01_test_08.txt AC 206 ms 47108 KiB
02_test_00.txt AC 54 ms 13016 KiB
02_test_01.txt AC 64 ms 13224 KiB
02_test_02.txt AC 88 ms 14692 KiB
02_test_03.txt AC 135 ms 26828 KiB
02_test_04.txt AC 143 ms 47656 KiB
02_test_05.txt AC 131 ms 47564 KiB
02_test_06.txt AC 161 ms 46900 KiB
02_test_07.txt AC 207 ms 47320 KiB
03_test_00.txt AC 61 ms 12932 KiB
03_test_01.txt AC 74 ms 13244 KiB
03_test_02.txt AC 82 ms 14940 KiB
03_test_03.txt AC 124 ms 29276 KiB
03_test_04.txt AC 124 ms 52380 KiB
03_test_05.txt AC 114 ms 52296 KiB
03_test_06.txt AC 146 ms 50508 KiB
03_test_07.txt AC 176 ms 51512 KiB
04_test_00.txt AC 186 ms 47532 KiB
04_test_01.txt AC 182 ms 49568 KiB
04_test_02.txt AC 174 ms 55044 KiB
04_test_03.txt AC 177 ms 54216 KiB
04_test_04.txt AC 176 ms 52992 KiB
05_test_00.txt AC 197 ms 46684 KiB
05_test_01.txt AC 204 ms 46836 KiB
05_test_02.txt AC 129 ms 47104 KiB
05_test_03.txt AC 123 ms 47316 KiB
05_test_04.txt AC 76 ms 46468 KiB
05_test_05.txt AC 78 ms 46368 KiB
05_test_06.txt AC 80 ms 47108 KiB
05_test_07.txt AC 81 ms 47420 KiB
06_test_00.txt AC 143 ms 47336 KiB
06_test_01.txt AC 148 ms 47920 KiB
06_test_02.txt AC 147 ms 47740 KiB
07_test_00.txt AC 91 ms 46820 KiB
07_test_01.txt AC 91 ms 46772 KiB
07_test_02.txt AC 92 ms 46780 KiB
07_test_03.txt AC 116 ms 46836 KiB
07_test_04.txt AC 98 ms 47532 KiB
07_test_05.txt AC 94 ms 46836 KiB
07_test_06.txt AC 164 ms 46484 KiB
07_test_07.txt AC 90 ms 47084 KiB
07_test_08.txt AC 94 ms 46948 KiB
07_test_09.txt AC 121 ms 46740 KiB