记录编号 563129 评测结果 AAAAAAA
题目名称 [NOIP 2003]神经网络 最终得分 100
用户昵称 Gravatar夜莺 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2021-07-14 20:51:21 内存使用 0.00 MiB
显示代码纯文本
#include<cstdio>
using namespace std;
const int MAXN=205;
struct note{
	int son[MAXN];
	int shu[MAXN];
	int num;
}fa[MAXN];
int ru[MAXN],c[MAXN],u[MAXN];
int ned[MAXN],sum;
int dui[MAXN],len,now,t;
int n,p;
inline void tope(){
	now=dui[++t];
	while(t<=len){
		if(c[now]<=0){
			for(int i=1;i<=fa[now].num;i++){
				ru[fa[now].son[i]]--;
				if(!ru[fa[now].son[i]])dui[++len]=fa[now].son[i];
			}
			now=dui[++t];
			continue;
		}
		for(int i=1;i<=fa[now].num;i++){
			ru[fa[now].son[i]]--;
			c[fa[now].son[i]]+=fa[now].shu[i]*c[now];
			if(!ru[fa[now].son[i]]){
				c[fa[now].son[i]]-=u[fa[now].son[i]];
				dui[++len]=fa[now].son[i];
			}
		}
		now=dui[++t];
	}
}
int main(){
	freopen("sjwl.in","r",stdin);
	freopen("sjwl.out","w",stdout);
	scanf("%d%d",&n,&p);
	for(int i=1;i<=n;i++){
		scanf("%d%d",&c[i],&u[i]);
		if(c[i]){
			ru[i]=0;
			dui[++len]=i;
		}
	}
	for(int i=1;i<=p;i++){
		int x,y,z;
		scanf("%d%d%d",&x,&y,&z);
		fa[x].son[++fa[x].num]=y;
		fa[x].shu[fa[x].num]=z;
		ru[y]++;
	}
	for(int i=1;i<=n;i++)
		if(!fa[i].num){
			ned[++sum]=i;
		}
	tope();
	bool have=false;
	for(int i=1;i<=sum;i++){
		if(c[ned[i]]>0){
			printf("%d %d\n",ned[i],c[ned[i]]);
			have=true;
		}
	}
	if(!have)printf("NULL");
	return 0;
}