社区讨论
求助
P4084[USACO17DEC] Barn Painting G参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo981njl
- 此快照首次捕获于
- 2023/10/28 07:05 2 年前
- 此快照最后确认于
- 2023/10/28 07:05 2 年前
CPP
#include<bits/stdc++.h>
#define rint register int
#define inf 0x3f3f3f3f
#define MAXN 200001
#define ll long long
using namespace std;
inline ll read(){
ll res=0,fs=1;
char c=getchar();
while(!(c>='0' && c<='9')){
if(c=='-')fs=-1;
c=getchar();
}
while(c>='0' && c<='9')res=res*10+c-'0',c=getchar();
return res*fs;
}
const ll MOD=1e9+7;
ll n,k,a[MAXN],f[MAXN][3];
vector<int> e[MAXN];
inline void dfs(int x,int fa){
if(a[x]==3)f[x][1]=f[x][2]=f[x][0]=1;
else f[x][1]=f[x][2]=f[x][0]=0,f[x][a[x]]=1;
for(rint i=0;i<e[x].size();i++){
int y=e[x][i];
if(y!=fa){
dfs(y,x);
for(rint j=0;j<3;j++){
f[x][j]=((f[y][(j+1)%3]+f[y][(j+2)%3])%MOD)*f[x][j]%MOD;
}
}
}
}
int main() {
int x,y;
n=read(),k=read();
for(rint i=1;i<n;i++){
x=read(),y=read();
e[x].push_back(y);
e[y].push_back(x);
}
for(rint i=1;i<=n;i++)a[i]=3;
for(rint i=1;i<=k;i++)a[read()]=read()-1;
dfs(1,0);
ll ans=(f[1][0]+f[1][1]+f[1][2])%MOD;
cout<<ans<<'\n';
return 0;
}
样例可过,第一个点下载下来就是样例,但还是挂
Link
回复
共 1 条回复,欢迎继续交流。
正在加载回复...