比赛 ctime蒟蒻生日赛 评测结果 AAAAAWW
题目名称 神经网络 最终得分 71
用户昵称 BaDBoY 运行时间 0.004 s
代码语言 C++ 内存使用 0.35 MiB
提交时间 2017-10-17 18:32:13
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<queue>
using namespace std;
int n,m,ji[101][101],rudu[101],tai[101],que[101],x,y,z;
bool pan[101];
int read() {
	int s=0;
	char ch=getchar();
	while(ch>'9'||ch<'0')
		ch=getchar();
	while(ch>='0'&&ch<='9') {
		s=s*10+ch-'0';
		ch=getchar();
	}
	return s;
}
queue<int> q;
int main() {
	freopen("sjwl.in","r",stdin);
	freopen("sjwl.out","w",stdout);
	n=read();
	m=read();
	memset(ji,0x3f,sizeof(ji));
	for(int i=1; i<=n; i++) {
		scanf("%d%d",&x,&y);
		tai[i]=x,que[i]=y;
	}
	for(int i=1; i<=m; i++) {
		scanf("%d%d%d",&x,&y,&z);
		ji[x][y]=z;
		pan[x]=1;
		rudu[y]++;
	}
	for(int i=1; i<=n; i++)
		if(rudu[i]==0) {
			rudu[i]--;
			q.push(i);
		}
	for(int i=1; i<=n; i++)
		if(rudu[i]>0)
			tai[i]-=que[i];
	int temp;
	while(!q.empty()) {
		temp=q.front();
		q.pop();
		for(int i=1; i<=n; i++) {
			if(ji[temp][i]<0x7ffff) {
				rudu[i]--;
				if(tai[temp]>0) tai[i]+=tai[temp]*ji[temp][i];
				if(rudu[i]==0) {
					rudu[i]--;
					q.push(i);
				}
			}
		}
	}
	bool duan=0;
	for(int i=1; i<=n; i++)
		if(pan[i]==0&&tai[i]>0) {
			duan=1;
			break;
		}
	if(duan==0) {
		cout<<"NULL";
		return 0;
	}
	for(int i=1; i<=n; i++)
		if(pan[i]==0&&tai[i]>0)
			cout<<i<<" "<<tai[i]<<endl;
	// while(1);
	return 0;
}