Advertisement
Guest User

Gym-102307G

a guest
Sep 15th, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.24 KB | None | 0 0
  1. /*
  2.                                 Bismillahi-r-Rahmani-r-Rahim
  3.                                         RhIeyAaD
  4.                                     IIT-7th Batch,JU
  5. */
  6. #include<bits/stdc++.h>
  7. using namespace std;
  8.  
  9. #define ll              long long int
  10. #define MAX             2134567891
  11. #define INF             1e9 + 7
  12. #define MIN             INT_MIN
  13. #define fr(i,n)         for(i=0;i<n;i++)
  14. #define rep(i,n)        for(i=1;i<=n;i++)
  15. #define ALL(n)          n.begin(),n.end()
  16. #define mem(x,n)        memset(x,n,sizeof(x))
  17. #define T_C(t)          printf("Case %lld: ",t)
  18. #define PAIR            pair<ll,ll>
  19. #define MP              make_pair
  20. #define pb(a)           push_back(a)
  21. #define ff              first
  22. #define ss              second
  23. #define MOD             1000000007///10^9
  24. #define p6              1000007 ///10^6->6 zero after 1 **
  25. #define hlw             printf("hlw\n");
  26. #define SN              4*p6
  27. #define NN              100
  28. #define N               p6
  29.  
  30. ll lev[N],cnt[N],vis[N],n,mx=1;
  31. vector<ll>v[10005],x;
  32. //map <ll,ll> mp;
  33. void dfs(ll s,ll lv)
  34. {
  35.     if(vis[s] || v[s].size()==0)return ;
  36.     vis[s]=1;
  37.     ll i,j,a,b;
  38.    // cout<<v[s].size()<<" sz "<<v[s][0]<<endl;
  39.     fr(i,v[s].size())
  40.     {
  41.         a=v[s][i];
  42.         if(vis[a]==0)
  43.         {
  44.             lev[a]=lv+1;
  45.             mx=max(mx,lv+1);
  46.             cnt[lv+1]++;
  47.             //cout<<"sending "<<a<<" with level "<<lv+1<<endl;
  48.             dfs(a,lv+1);
  49.         }
  50.     }
  51.  
  52. }
  53. int main()
  54. {
  55.     //while(1)
  56.     //READ;WRITE;
  57. {
  58.     ll a=0,b=0,c=0,d,diff,e,f,g,i,j,k,l,m,in,mod,loc,p,q,r,u,val,w,t,tc,sz,lo,hi,mid,mn=MAX,sum=0,ans=0;
  59.     cin>>n>>k;
  60.     rep(i,n)
  61.     {
  62.         cin>>a;
  63.         v[a].pb(i);
  64.         if(a==0)
  65.         {
  66.             x.pb(i);
  67.             lev[i]=1;
  68.             cnt[1]++;
  69.         }
  70.     }
  71.     l=x.size();
  72.     fr(i,l)
  73.     {
  74.        // cout<<"sending "<<x[i]<<" with level "<<1<<endl;
  75.         dfs(x[i],1);
  76.     }
  77.     c=0;
  78.     rep(i,mx)
  79.     {
  80.         a=cnt[i]+c;
  81.        // cout<<i<<" a "<<a<<" c "<<c<<endl;
  82.         ans++;
  83.         if(a>k)c=a-k;
  84.         else c=0;
  85.     }
  86.     if(c>0)
  87.     {
  88.         ans+=c/k;
  89.         if(c%k!=0)ans++;
  90.     }
  91.     cout<<ans<<endl;
  92.  
  93. }
  94.     return 0;
  95. }
  96.  
  97. /*
  98. 10 10
  99. 4 4 6 8 7 5 0 9 0 4
  100. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement