社区讨论
80分求调
P7113[NOIP2020] 排水系统参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo2b7gc2
- 此快照首次捕获于
- 2023/10/23 10:59 2 年前
- 此快照最后确认于
- 2023/11/03 11:09 2 年前
CPP
#include<bits/stdc++.h>
typedef unsigned long long ull;
using namespace std;
template <class I>
inline void read(I &cn) {
char c; int sig = 1;
while(!isdigit(c = getchar())) if(c == '-') sig = 0;
if(sig) {cn = c-48; while(isdigit(c = getchar())) cn = (cn<<3)+(cn<<1)+(c-48); }
else {cn = 48-c; while(isdigit(c = getchar())) cn = (cn<<3)+(cn<<1)+(48-c); }
}
template<typename T>void write(T cn)
{
if(cn < 0) { putchar('-'); cn = 0-cn; }
int wei = 0; T cm = 0;
do cm = cm*10+cn%10,cn/=10,wei++; while(cn);
while(wei--) putchar(cm%10+48),cm/=10;
}
const int MAXN=100010;
__int128 n,m;
__int128 ha[MAXN],vis[MAXN];
__int128 sum1[MAXN],sum2[MAXN];
vector<__int128> a[MAXN],b[MAXN];
__int128 GCD(__int128 x,__int128 y){
return y?GCD(y,x%y):x;
}
void add(__int128 a1,__int128 a2,__int128 b1,__int128 b2,__int128 uu,__int128 vv){
__int128 gys=GCD(a2,b2);
__int128 gbs=(a2/gys)*(b2/gys)*gys;//公分母
a1=a1*(gbs/a2),b1=b1*(gbs/b2);
__int128 c=a1+b1;
__int128 gyss=GCD(c,gbs);
sum1[vv]=c/gyss,sum2[vv]=gbs/gyss;
}
void bfs(__int128 u){
queue<__int128> q;
q.push(u);
while(!q.empty()){
__int128 s=q.front();q.pop();
for(__int128 i=0;i<a[s].size();i++){
__int128 v=a[s][i],f=0;
for(__int128 k=0;k<b[v].size();k++) if(vis[b[v][k]]==0) f=1;
if(f==0&&vis[v]==0){
for(__int128 j=0;j<b[v].size();j++){
__int128 w=b[v][j];
add(sum1[w],sum2[w]*a[w].size(),sum1[v],sum2[v],w,v);
}
vis[v]=1;
q.push(v);
}
}
if(q.empty()) break;
}
}
signed main(){
read(n);read(m);
for(__int128 i=1;i<=n;i++){
__int128 d;
read(d);
if(d==0) ha[i]=-1;//-1为出水口
for(__int128 j=1;j<=d;j++){
__int128 x;
read(x);
a[i].push_back(x);
b[x].push_back(i);
ha[x]=1;//不为入水口
}
}
for(__int128 i=1;i<=n;i++) sum2[i]=1;
for(__int128 i=1;i<=n;i++)
if(ha[i]==0) sum1[i]=sum2[i]=1,vis[i]=1,bfs(i);
for(__int128 i=1;i<=n;i++)
if(ha[i]==-1)
write(sum1[i]),puts(" "),write(sum2[i]),puts("\n");
return 0;
}
/*
10 1
5 2 3 4 5 6
2 7 8
2 8 10
2 9 7
1 9
3 7 8 9
1 10
0
1 10
0
4 15
11 15
*/
回复
共 1 条回复,欢迎继续交流。
正在加载回复...