Skip to main content

All Solution Code of CodeChef May Long Challenge 2021

competitve programming solution here...

solution code of Valid Paths problem number-7 of may long challenge codechef

 Valid Paths Problem Solution Code: CodeChef


Solution Code

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define f(iabfor(int i=a; i<b; i++)
#define mod 1000000007
#define mk make_pair
#define uniq(v) (v).erase(unique(all(v)), (v).end())
#define ff first
#define ss second
#define rf(iabfor(int i=a;i>=b;i--)
#define sc(ascanf("%lld"&a)
#define pf printf
#define sz(a) (int)(a.size())
#define psf push_front
#define ppf pop_front
#define ppb pop_back
#define pb push_back
#define pq priority_queue
#define all(s) s.begin(),s.end()
#define sp(asetprecision(a)
#define rz resize
#define ld long double
#define inf (ll)1e18
#define ub upper_bound
#define lb lower_bound
#define bs binary_search
#define eb emplace_back
const double pi = acos(-1);

ll binpow(ll all bll md){ll res = 1;while(b!=0){if(b&1)res*=a,res%=md;a*=a,a%=md;b>>=1;}return res%md;}

ll ans;
vector<vector<int>> v;
vector<ll> dp, tot;
void dfs(int curint par)
{
    dp[cur]=1, tot[cur]=1;
    ll sum = 0, cnt = 0;
    f(i, 0sz(v[cur]))
    {
        ll node = v[cur][i];
        if(node != par)
        {
            dfs(node, cur);
            dp[cur]+=((2*dp[node])%mod), dp[cur]%=mod, cnt++, tot[cur]+=tot[node], tot[cur]%=mod, tot[cur]+=dp[node], tot[cur]%=mod;
            sum += dp[node];
        }
    }
    f(i, 0sz(v[cur]))
    {
        int node = v[cur][i];
        if(node != par)
        {
            tot[cur] += (dp[node]*((sum-dp[node]+mod)%mod))%mod;
            tot[cur] %= mod;
        }
    }
}

int main()
{
    ios_base::sync_with_stdio(false), cin.tie(NULL);
    int z = 1;
    cin>>z;
    f(i, 1, z+1)
    {
        ans = 0;
        int n;cin>>n;
        v.rz(n+1), dp.rz(n+1), tot.rz(n+1);
        f(i, 0, n-1)
        {
            int l, r;
            cin>>l>>r;
            v[l].pb(r), v[r].pb(l);
        }
        dfs(11);
        ll ans = tot[1]%mod;
        cout<<ans<<endl;
        dp.clear(), v.clear(), tot.clear();
    }
}


Comments

Post a Comment

Popular posts from this blog

solution code of An Interesting Sequence problem number-8 of may long challenge codechef

An Interesting Sequence Problem Solution Code: CodeChef #include   <bits/stdc++.h> using   namespace   std ; #define   endl   " \n " int   main () {     cin. tie ( 0 );      int  N  =   4 e 6   +   5 ;      int  phi[N], ans[N];      for  ( int  i  =   0 ; i  <  N; i ++ )     {         phi[i]  =  i;         ans[i]  =   0 ;     }      for  ( int  p  =   2 ; p  <  N; p ++ )     {          if  (phi[p]  ==  p)         {            ...

solution code of Tree House problem number-6 of may long challenge codechef

 Tree House Problem Solution Code: CodeChef Solution Code #pragma   GCC   optimize (" Ofast ", " unroll-loops ") #include   <bits/stdc++.h> using   namespace   std ; #define   int   long   long   int #define   double   long   double using   pii   =   pair < int ,  int >; template  < typename   T > using   Prior   =   std :: priority_queue < T ,  vector < T >,  greater < T >>; #define   X  first #define   Y  second #define   eb  emplace_back #define   ALL ( x )  begin (x),  end (x) #define   RALL ( x )  rbegin (x),  rend (x) #define   fastIO ()  ios_base ::sync_with_stdio, cin. tie ( 0 ) mt19937_64  rng( chrono :: steady_clock :: now (). time_since_epoch (). count ()); inline   int   getRand ( int   L ,  int   R ) { ...