怎样在手机上制作网站,中国高清vpswindows在线观看,宿迁网站建设价位,搜索引擎营销网站链接#xff1a;https://ac.nowcoder.com/acm/problem/19782 题目#xff1a;修修去年种下了一棵树#xff0c;现在它已经有n个结点了。 修修非常擅长数数#xff0c;他很快就数出了包含每个点的连通点集的数量。 澜澜也想知道答案#xff0c;但他不会数数…链接https://ac.nowcoder.com/acm/problem/19782 题目修修去年种下了一棵树现在它已经有n个结点了。 修修非常擅长数数他很快就数出了包含每个点的连通点集的数量。 澜澜也想知道答案但他不会数数于是他把问题交给了你。
思路是很简单的换根dp先求出以1为根的值然后进行撤回操作再换根这里最要注意的坑点是 dp【v】1%mod会等于0加法会导致模等于0所以我们这里需要特判处理。
#include iostream
#include cstdio
#include fstream
#include algorithm
#include cmath
#include deque
#include vector
#include queue
#include string
#include cstring
#include map
#include stack
#include set
#include cstdlib
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define re register
#define lson rt1
#define rson rt1|1
#define lowbit(a) ((a)-(a))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define fi first
#define rep(i,n) for(int i0;(i)(n);i)
#define rep1(i,n) for(int i1;(i)(n);i)
#define se second
#define scd(a) scanf(%d,a)
#define scdd(a,b) scanf(%d%d,a,b)
#define scddd(a,b,c) scanf(%d%d%d,a,b,c)
#define ac coutans\n
#define F(x) ((x)/3((x)%31?0:tb))
#define G(x) ((x)tb?(x)*31:((x)-tb)*32)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pairll,ll pii;
int dx[4] {-1,1,0,0},dy[4] {0,0,1,-1};
const ll mod1e97;
const ll N 1e610;
const double eps 1e-4;
//const double piacos(-1);
ll qk(ll a,ll b){ll ans1;while(b){if(b1) ans(ans*a)%mod;a(a*a)%mod;b/2;}return ans%mod;
}
int n;
ll dp[N];
vectorint g[N];
ll w[N],f[N];
void dfs(int u,int f){dp[u]1;for(int v:g[u]){if(vf) continue;dfs(v,u);dp[u](dp[u]*((dp[v]1ll)%mod))%mod;}
}
void DP(int u,int p){for(int v:g[u]){if(vp) continue;if((dp[v]1)%mod0){if(p) f[v]f[u]1;else f[v]1;for(int k:g[u]){if(kv||kp) continue;f[v](f[v]*(dp[k]1)%mod)%mod;}}else f[v](w[u]*qk(dp[v]1ll,mod-2))%mod;w[v](dp[v]*((f[v]1ll)%mod))%mod;DP(v,u);}
}
void sovle(){cinn;for(int i2;in;i){int u,v;cinuv;g[u].push_back(v);g[v].push_back(u);}dfs(1,0);w[1]dp[1];DP(1,0);for(int i1;in;i) coutw[i]endl;
}
int main()
{
#ifdef LOCALfreopen(in.txt, r, stdin);
#elseint t1;//cint;while(t--) sovle();
#endif // LOCALreturn 0;
}