| Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 92667 | sh25_shenpy | 神经网络 | C++ | 通过 | 1 MS | 200 KB | 1231 | 2026-07-17 12:30:43 |
#include<queue> #include<cstdio> #include<algorithm> #define N 101 using namespace std; struct edge{ int to,val,nxt; } e[N*N]; struct answer{ int id,val; } ans[N]; int h,i,m,n,t,u,v,w,U,c[N],hd[N],out[N],vis[N]; queue <int> q; int cnt=0,flag=0; inline bool cmp(answer aa,answer bb) {return aa.id<bb.id;} inline void build(int u,int v,int w) { cnt++; e[cnt].to=v; e[cnt].val=w; e[cnt].nxt=hd[u]; hd[u]=cnt; } int main() { scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { vis[i]=out[i]=0; scanf("%d%d",&c[i],&U); //这里不可以直接减,初始层也有可能有阈值,但不能减去.(题目要求) if(c[i]>0) {q.push(i);vis[i]=1;}//vis表示是否已入过队 else c[i]-=U; } for(i=1;i<=m;i++) { scanf("%d%d%d",&u,&v,&w); build(u,v,w); out[u]=1;//out表示有无出边,用于最后找输出层 } while(!q.empty()) { h=q.front();q.pop(); if(c[h]<=0) continue; for(i=hd[h];i;i=e[i].nxt) { t=e[i].to; c[t]+=e[i].val*c[h]; if(!vis[t]) { q.push(t); vis[t]=1; } } } for(i=1;i<=n;i++) if(!out[i]&&c[i]>0) {printf("%d %d\n",i,c[i]);flag=1;} if(!flag) {puts("NULL");return 0;} return 0; }