记录编号 |
406812 |
评测结果 |
AAAAAAA |
题目名称 |
[NOIP 2003]神经网络 |
最终得分 |
100 |
用户昵称 |
liuyu |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.002 s |
提交时间 |
2017-05-19 21:43:12 |
内存使用 |
0.48 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn=203;
int n,p,vis[maxn],x,y,ww,w[maxn][maxn],c[maxn],u[maxn];
queue<int>q;
vector<int>b[maxn];
vector<int>ans;
void bfs()
{
while(!q.empty())
{
int v=q.front();
q.pop();
if(c[v]<=0)continue;
for(int i=0;i<b[v].size();i++)
{
c[b[v][i]]+=w[v][b[v][i]]*c[v];
if(!vis[b[v][i]]){c[b[v][i]]-=u[b[v][i]];q.push(b[v][i]);vis[b[v][i]]=1;}
}
if(b[v].empty())ans.push_back(v);
}
}
void print()
{
int a=0;
sort(ans.begin(),ans.end());
for(int i=0;i<ans.size();i++)
if(c[ans[i]]>0){printf("%d %d\n",ans[i],c[ans[i]]);a=1;}
if(!a)printf("NULL");
}
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]!=0)q.push(i);
}
for(int i=1;i<=p;i++)
{
scanf("%d%d%d",&x,&y,&ww);
b[x].push_back(y);
w[x][y]=ww;
}
bfs();
print();
return 0;
}