/// Raihan Ruhin /// CSE, Jahangirnagar University. /// Dhaka-Bangladesh. /// id: raihanruhin (topcoder / codeforces / codechef / hackerrank / uva / uvalive / spoj), 3235 (lightoj) /// mail: raihanruhin@ (yahoo / gmail / facebook) /// blog: ruhinraihan.blogspot.com #include<bits/stdc++.h> using namespace std; #define SET(a) memset(a,-1,sizeof(a)) #define CLR(a) memset(a,0,sizeof(a)) #define PI acos(-1.0) #define MOD 1000000007 #define MX 100010 vector<int>adj[2005]; long long arr[2005], dp[2005]; int n, d, now; bool vis[2005]; long long func(int u) { vis[u]=1; long long &ret=dp[u]; if(ret!=-1) return ret; ret=1; for(int i=0;i<adj[u].size();i++) { int v=adj[u][i]; if(!vis[v]) if(arr[now]<=arr[v] && arr[now]+d>=arr[v]) if(!(arr[now]==arr[v] && now<v)) ret=(ret*(func(v)+1))%MOD; } return ret; } int main() { ios_base::sync_with_stdio(0);cin.tie(0); int tc,kk=1, x, y; cin>>d>>n; for(int i=1;i<=n;i++) cin>>arr[i]; for(int i=1;i<n;i++) { cin>>x>>y; adj[x].push_back(y); adj[y].push_back(x); } long long ans=0; for(int i=1;i<=n;i++) { CLR(vis); SET(dp); now=i; ans=(ans+func(i))%MOD; } cout<<ans; return 0; }
Friday, 20 February 2015
Codeforces Round #277 (Div. 2) Valid Sets
Problem: Valid Sets
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment