dfs and similar dp graphs

Please click on ads to support us..

C++ Code:

#include<iostream>
#include<map>
#include<vector>
#include<cstring>
#include<unordered_set>
#include<unordered_map>
using namespace std;
const static int N=1e5+5;
long long dp[N][3];
int mod=998244353;
vector<pair<int,int>> edge[N];
bool vis[N];
long long cnt1=0;
long long ans=0; 

void dfs(int u){
//     long long tmp1=0;
    for(auto &pp:edge[u]){
        if(!vis[pp.first])
            dfs(pp.first);
//         if(pp.second)tmp1++;
        dp[u][1] = (dp[u][1] + (pp.second))%mod;
        dp[u][2] = ((dp[u][2]+ dp[pp.first][2])%mod + (dp[pp.first][0] + (pp.second == 0))*dp[u][1]%mod)%mod;
        dp[u][0] = ((dp[u][0] +dp[pp.first][0])%mod + (pp.second==0))%mod;
        dp[u][1] = ((dp[u][1] +dp[pp.first][1])%mod)%mod;
        
//         tmp1=(dp[pp.first][1]+tmp1)%mod;
    }
    vis[u] = true;
}
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        int m;
        int a,b;
        cin>>m;
        for(int j=0;j<m;j++){
            cin>>a>>b;
            edge[i].push_back({a,b});
        }
    }
    dfs(1);
    cout<<dp[1][2];

    
}
    


Comments

Submit
0 Comments
More Questions

1302. Deepest Leaves Sum
1209. Remove All Adjacent Duplicates in String II
994. Rotting Oranges
983. Minimum Cost For Tickets
973. K Closest Points to Origin
969. Pancake Sorting
967. Numbers With Same Consecutive Differences
957. Prison Cells After N Days
946. Validate Stack Sequences
921. Minimum Add to Make Parentheses Valid
881. Boats to Save People
497. Random Point in Non-overlapping Rectangles
528. Random Pick with Weight
470. Implement Rand10() Using Rand7()
866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST