记录编号 465778 评测结果 AAAAAAA
题目名称 [NOIP 2003]神经网络 最终得分 100
用户昵称 Gravatar据说这是zzy 是否通过 通过
代码语言 C++ 运行时间 0.005 s
提交时间 2017-10-27 20:58:05 内存使用 0.48 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
#include<deque>
#include<vector>
using namespace std;
deque <int> q;//用的
vector <int> w;
int n=0,p=0;
struct abc
{
    vector <int> g;
    int sh;
	int r;
}a[205];
int b[205][205]={0};//边权值
int rd[205]={0};//入度
int c[205],u[205];
int topsort()
{
    for(int i=1;i<=n;i++)
    {
        if(rd[i]==0)
        q.push_back(i);
        while(!q.empty())
        {
            int v=q.front();
            w.push_back(v);
            q.pop_front();
            for(int i=0;i<a[v].sh;i++)
            {
                rd[a[v].g[i]]--;
                if(!rd[a[v].g[i]])
                    q.push_back(a[v].g[i]);
            }
        }
    }
}
void js(int x)
{
	int ans=0;
	int i=0;
	while(a[x].r)
	{
		if(b[i][x])
		{
			a[x].r--;
			if(c[i]>0)
			ans+=b[i][x]*c[i];
		}
		i++;
	}
	c[x]=ans-u[x];
}
int main()
{
	freopen("sjwl.in","r",stdin);
	freopen("sjwl.out","w",stdout);
    cin>>n>>p;
    for(int i=1;i<=n;i++)
    {
        int x,y;
        cin>>x>>y;
        c[i]=x;
        u[i]=y;
    }
    for(int i=1;i<=p;i++)
    {
        int x,y,q;
        scanf("%d%d%d",&x,&y,&q);
        a[x].g.push_back(y);
        rd[y]++;
        a[x].sh++;a[y].r++;
        b[x][y]=q;
    }
    topsort();
	bool jb=0;
	for(int i=0;i<n;i++)
		if(a[w[i]].r!=0)
		js(w[i]);
    for(int i=1;i<=n;i++)
    {
        if(c[i]>0&&a[i].sh==0)
		{
            cout<<i<<' '<<c[i]<<' '<<endl;
			jb=1;
		}
    }
	if(jb==0)
		cout<<"NULL";
	return 0;
}