社区讨论
萌新70pts求助
P7113[NOIP2020] 排水系统参与者 3已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @lo7y6zsc
- 此快照首次捕获于
- 2023/10/27 09:41 2 年前
- 此快照最后确认于
- 2023/10/27 09:41 2 年前
怎么改?
CPP#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+5;
ll n,m,tot=0,h[N],pai[N],k[N];
struct point{
ll zi=0,mu=1;
}p[N];
struct EDGE{
ll nxt,v;
}e[N<<1];
inline ll gcd(ll x,ll y){
return (y==0)? x:gcd(y,x%y);
}
inline void jia(ll x,ll y){
p[y].zi=(p[x].zi*p[y].mu) + k[x]*(p[y].zi*p[x].mu),
p[y].mu=k[x]*p[x].mu*p[y].mu;
ll yin=gcd(p[y].zi,p[y].mu);
p[y].zi/=yin,p[y].mu/=yin;
}
inline void add(ll x,ll y){
e[++tot].v=y,
e[tot].nxt=h[x],
h[x]=tot;
}
inline void dfs(ll x){
if(pai[x]) return;
for(int i=h[x];i;i=e[i].nxt){
jia(x,e[i].v);
dfs(e[i].v);
}
p[x].zi=0,p[x].mu=1;
}
int main(){
freopen("water.in","r",stdin);
freopen("water.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;++i){
int x;cin>>k[i];
if(!k[i]){
pai[i]=1;continue;
}
for(int j=1;j<=k[i];++j){
cin>>x,add(i,x);
}
}
for(int i=1;i<=m;++i) p[i].zi=1;
for(int i=1;i<=m;++i){
dfs(i);
}
for(int i=1;i<=n;++i){
if(pai[i]){
cout<<p[i].zi<<" "<<p[i].mu<<endl;
}
}
return 0;
}
回复
共 6 条回复,欢迎继续交流。
正在加载回复...