大佬们,帮忙看看问题在哪里,改了一下午30分
查看原帖
大佬们,帮忙看看问题在哪里,改了一下午30分
558299
lzc2006楼主2022/11/22 18:35
#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
#define ull __int128
using namespace std;

ull a[100010],b[100010][6],in[11],out[100010];
ull n,m,fm[100010],fz[100010];
bool bo[100010];

inline ull gcd(ull x,ull y){
	if(x%y==0)return y;
	return gcd(y,x%y);
}

inline int read(){
	int f=1,x=0;char ch=getchar();
	while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
	return x*f;
}

void add(ull x,ull fzz,ull fmm){
	if(!fz[x]&&!fm[x]){
		fz[x]=fzz;
		fm[x]=fmm;
		return ;
	}
	else{
		fz[x]=fz[x]*fmm+fzz*fm[x];
		fm[x]*=fmm;
		return ;
	}
}

void dfs(ull x,ull fzz,ull fmm){
	if(!a[x]){
		add(x,fzz,fmm);
		return ;
	}
	for(int i=1;i<=a[x];i++){
		dfs(b[x][i],fzz,fmm*a[x]);
	}
}

inline void put1(ull x){
	if(x<0){putchar('-');x=-x;}
	if(x>10){put1(x/10);}
	putchar((char)(x%10+'0'));
	return ;
}

void write(ull x,ull y){
	ull mgcd=gcd(x,y);
	ull xx=x/mgcd;
	ull yy=y/mgcd;
	put1(xx);putchar(' ');put1(yy);putchar('\n');
	return ;
}

int main(){
	n=read();m=read();
	for(int i=1;i<=n;i++){
		a[i]=read();
		for(int j=1;j<=a[i];j++){
			b[i][j]=read();
			bo[b[i][j]]=1;
		}
	}
	int op=1,po=1;
	for(int i=1;i<=n;i++){
		if(!bo[i]){
			in[op++]=i;
		}
		if(!a[i]){
			out[po++]=i;
		}
	}
	po--;
	for(int i=1;i<=m;i++){
		dfs(i,1,1);
	}
	for(int i=1;i<=po;i++){
		write(fz[out[i]],fm[out[i]]);
	}
	return 0;
}
```cpp
代码如上,123 AC,4578 WA,6910 RE
2022/11/22 18:35
加载中...